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ď č. 1Môž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>