Това са моите слоеве на проекта:
.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>