.Net Core项目在依赖于其他一些项目时访问太多的类或API

时间:2018-01-24 02:41:59

标签: .net-core-2.0 .net-standard-2.0

我有两个.Net Standard 2.0库项目:Lib1Lib2Lib2取决于Lib1Lib1有类Class1Lib2有班级Class2。然后我创建一个.Net Core 2.0和一个.Net Framework项目:

  • 名为DevInNetCore的.Net Core 2.0控制台应用程序项目 这仅取决于Lib2,但Lib1.Class1可以在此处访问 项目
  • .Net Framework 4.6.1控制台应用程序项目命名 DevInNetFramework也只取决于Lib2,但现在 在此项目中无法访问Lib1.Class1

我的问题是:为什么可以在.Net Core项目Lib1.Class1中访问DevInNetCore,因为它只依赖于项目Lib2?有没有办法让Lib1无法在项目DevInNetCore中访问?

以下是我的演示解决方案:加载解决方案时可能需要https://www.dropbox.com/s/u60xjl3i37arcs2/LibTest.zip?dl=0 Visual Studio 2017

1 个答案:

答案 0 :(得分:0)

  

为什么可以在.Net Core项目DevInNetCore中访问Lib1.Class1   因为它只取决于项目Lib2?

此更改带有新格式的csproj个文件。这是github上的related issue。如果检查Visual Studio中的引用,您将看到.Net Core项目VS'知道'Lib2取决于Lib1。但是,这不是来自.Net Framework项目的参考。

enter image description here

回答你的问题“为什么......” - 因为它是为新项目格式而不是旧项目格式实现的功能。

  

有没有办法让Lib1无法在项目中访问   DevInNetCore?

这是github上的related discussion。我同意Eilon's comment这种限制不应该占一般地位。但是,如果您仍想这样做,则可以在Lib1内部设置Lib2类型,然后允许InternalsVisibleTo使用 self.myStackView.addArrangedSubview(lbl) 属性访问它们。