/ Как да предотвратите достъпа до проекти, които не са директно свързани в ASP.NET Core - c #, asp.net-core, asp.net-core-2.0

Как да предотвратите достъпа до проекти, които не се споменават директно в ASP.NET Core - c #, asp.net-core, asp.net-core-2.0

Това са моите слоеве на проекта:

.NET Core 2.0 Web Project: UILayer
.NET Standard Class library : BusinessLayer
.NET Standard Class library : DataAccessLayer

Добавям справката на BusinessLayer към UILayer и позоваването на DataAccessLayer на BusinessLayer

Така че очаквах, че слоевете просто имат достъп дотези DLL, които са посочени. Но сега виждам, че UILayer има достъп до DataAccessLayer! Защо? И как мога да предотвратя това? (Имам предвид физически не само логично)

Изглежда, че е ново в.NET Core не мога да видя една и съща функционалност с библиотеките клас .NET Framework 4.6.1.Така че още един въпрос е, защо е добавен в ASP.NET Core проекти? Има ли някакви предимства? Ако искам да получа достъп до проекта просто аз може да добави референцията.

Отговори:

1 за отговор № 1

Можете да посочите, че вътре в .csproj на вашия проект BusinessLayer, използвайте <PrivateAssets> елемент вътре в <ProjectReference> да декларирате активите, които не искате да бъдат видими за родителски проекти. Тук имате допълнителна информация за този елемент

<ProjectReference Include="{path-of-your-referenced-DataAccessLayer}">
<PrivateAssets>All</PrivateAssets>
</ProjectReference>