如何防止访问未在ASP.NET Core中直接引用的项目

时间:2018-01-18 20:54:25

标签: 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 个答案:

答案 0 :(得分:1)

您可以在BusinessLayer项目的.csproj中指定,使用<PrivateAssets>中的<ProjectReference>元素来声明您不希望父项目可见的资产。 Here you have additional info for this element

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