如何在 .Net Core 中引用项目
How to reference projects in .Net Core
假设我有这个解决方案结构:
- ProjectA(Class 库 - .NET Standard 1.5)
- ProjectB(Class 库 - .NET Standard 1.5)
- ProjectConsole(控制台应用程序 - netcoreapp1.0)
其中 ProjectB 引用了 ProjectA,ProjectConsole 引用了 项目B
如果在 project.json 中我声明类似的内容:
"dependencies": {
"ProjectA": "1.0.0-*",
...
},
然后在 ProjectConsole 中可以执行如下操作:
var projectA = new Project.Class1();
发生这种情况是因为 ProjectB 引用了 ProjectA。
但是我不想要这个,问题是,有什么办法可以防止吗?
不,你无法阻止它。
如果 ProjectConsole 依赖于 ProjectB,并且 ProjectB 引用 ProjectA ,然后 ProjectConsole 将隐式访问 ProjectA 的 public 成员。
如果您真的想防止这种情况发生,您可以使 ProjectA 的成员 internal
并使用 InternalsVisibleTo
属性。但这不是一个好的模式——如果 B 依赖 A,它应该依赖 A 的 public 成员,或者它们应该合并到一个库中。
假设我有这个解决方案结构:
- ProjectA(Class 库 - .NET Standard 1.5)
- ProjectB(Class 库 - .NET Standard 1.5)
- ProjectConsole(控制台应用程序 - netcoreapp1.0)
其中 ProjectB 引用了 ProjectA,ProjectConsole 引用了 项目B
如果在 project.json 中我声明类似的内容:
"dependencies": {
"ProjectA": "1.0.0-*",
...
},
然后在 ProjectConsole 中可以执行如下操作:
var projectA = new Project.Class1();
发生这种情况是因为 ProjectB 引用了 ProjectA。
但是我不想要这个,问题是,有什么办法可以防止吗?
不,你无法阻止它。
如果 ProjectConsole 依赖于 ProjectB,并且 ProjectB 引用 ProjectA ,然后 ProjectConsole 将隐式访问 ProjectA 的 public 成员。
如果您真的想防止这种情况发生,您可以使 ProjectA 的成员 internal
并使用 InternalsVisibleTo
属性。但这不是一个好的模式——如果 B 依赖 A,它应该依赖 A 的 public 成员,或者它们应该合并到一个库中。