我有两个.Net Standard 2.0库项目:Lib1
和Lib2
,Lib2
取决于Lib1
,Lib1
有类Class1
,Lib2
有班级Class2
。然后我创建一个.Net Core 2.0和一个.Net Framework项目:
DevInNetCore
的.Net Core 2.0控制台应用程序项目
这仅取决于Lib2
,但Lib1.Class1
可以在此处访问
项目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 。
答案 0 :(得分:0)
为什么可以在.Net Core项目DevInNetCore中访问Lib1.Class1 因为它只取决于项目Lib2?
此更改带有新格式的csproj
个文件。这是github上的related issue。如果检查Visual Studio中的引用,您将看到.Net Core项目VS'知道'Lib2
取决于Lib1
。但是,这不是来自.Net Framework项目的参考。
回答你的问题“为什么......” - 因为它是为新项目格式而不是旧项目格式实现的功能。
有没有办法让Lib1无法在项目中访问 DevInNetCore?
这是github上的related discussion。我同意Eilon's comment这种限制不应该占一般地位。但是,如果您仍想这样做,则可以在Lib1
内部设置Lib2
类型,然后允许InternalsVisibleTo
使用 self.myStackView.addArrangedSubview(lbl)
属性访问它们。