/ Ako zabrániť prístupu k projektom, ktoré nie sú priamo uvedené v ASP.NET Core - c #, asp.net-core, asp.net-core-2.0

Ako zabrániť prístupu k projektom, ktoré nie sú priamo odkazované na ASP.NET Core - c #, asp.net-core, asp.net-core-2.0

Toto sú moje projektové vrstvy:

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

Pridávam odkaz BusinessLayer na adresu UILayer a odkaz DataAccessLayer na BusinessLayer

Takže som očakával, že vrstvy majú len prístup ktie DLL, ktoré sú uvedené. Ale teraz vidím, že UILayer má prístup k DataAccessLayer! Prečo? A ako to mohol zabrániť? (Myslím fyzicky nie logicky)

Zdá sa, že je to nové.NET Core Nemôžem vidieť rovnakú funkčnosť s knižnicami triedy .NET Framework 4.6.1 Takže ďalšia otázka je to, prečo je pridaná v ASP.NET Core projektoch? Existujú nejaké výhody? Ak chcem získať prístup k projektu jednoducho môže pridať odkaz.

odpovede:

1 pre odpoveď č. 1

Môžete určiť, že vo vnútri .csproj vášho projektu BusinessLayer použite <PrivateAssets> prvok vo vnútri <ProjectReference> aby ste označili aktíva, ktoré nechcete byť viditeľné pre rodičovské projekty. Tu máte ďalšie informácie o tomto prvku

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