我们已经开始迁移到.NET Standard的新项目类型,并使用了Hanselman在this blog post中链接的工具。
我们注意到的一件奇怪的事情是,一个项目现在接收到对其引用所拥有的项目的引用。我已经设置了一个示例,并确认它不仅是我们的主要应用程序。对于主应用程序,假设我们有
控制台应用程序:TestingSomeStuff
Net标准库:Library1
Net标准库:Library2
在这种情况下,我们有以下参考文献:
TestingSomeStuff-> Library1-> Library2
由于某些原因,未直接引用TestingSomeStuff
的{{1}}能够访问Library2
中的类型,这似乎是不正确的。我在.NET Framework应用程序中设置了相同的情况,并且Library2
无权访问TestingSomeStuff
。
为了构建适当的分层应用程序,我们需要具有阻止Library2
作为通行证访问TestingSomeStuff
的能力,而我找不到有关如何实现此目的的任何信息。
我尝试设置Library2
,IncludeAssets
和其他与此类似的选项,但没有任何效果。
答案 0 :(得分:1)
这是.NET Core的新MSBuild项目的新增功能。如果要隐藏某些内容,请在Library2中将其标记为internal
,然后使用InternalsVisibleTo
属性并授予Library1访问权限。
答案 1 :(得分:0)
好的,我弄清楚这里发生了什么,这完全是我的错误,但是我没有为社区删除这个问题。在“ ExcludeAssets”全部无效的陈述中,我错了。
问题在于设置比我的示例项目要复杂得多,真的,我们要做的是:
TestingSomeStuff
-Library1
-Library3
-Library2
-Library3
我只是在Library1上测试ExcludeAssets = All,所以它仍然通过引用Library2来引用它。