为什么我的项目引用会传递到其他引用

时间:2018-10-15 19:53:12

标签: c# .net-standard csproj

我们已经开始迁移到.NET Standard的新项目类型,并使用了Hanselman在this blog post中链接的工具。

我们注意到的一件奇怪的事情是,一个项目现在接收到对其引用所拥有的项目的引用。我已经设置了一个示例,并确认它不仅是我们的主要应用程序。对于主应用程序,假设我们有

  

控制台应用程序:TestingSomeStuff

     

Net标准库:Library1

     

Net标准库:Library2

在这种情况下,我们有以下参考文献:

  

TestingSomeStuff-> Library1-> Library2

由于某些原因,未直接引用TestingSomeStuff的{​​{1}}能够访问Library2中的类型,这似乎是不正确的。我在.NET Framework应用程序中设置了相同的情况,并且Library2无权访问TestingSomeStuff

为了构建适当的分层应用程序,我们需要具有阻止Library2作为通行证访问TestingSomeStuff的能力,而我找不到有关如何实现此目的的任何信息。

我尝试设置Library2IncludeAssets和其他与此类似的选项,但没有任何效果。

2 个答案:

答案 0 :(得分:1)

这是.NET Core的新MSBuild项目的新增功能。如果要隐藏某些内容,请在Library2中将其标记为internal,然后使用InternalsVisibleTo属性并授予Library1访问权限。

答案 1 :(得分:0)

好的,我弄清楚这里发生了什么,这完全是我的错误,但是我没有为社区删除这个问题。在“ ExcludeAssets”全部无效的陈述中,我错了。

问题在于设置比我的示例项目要复杂得多,真的,我们要做的是:

  

TestingSomeStuff

     

-Library1

     

-Library3

     

-Library2

     

-Library3

我只是在Library1上测试ExcludeAssets = All,所以它仍然通过引用Library2来引用它。