.NET Core中的引用封装似乎已经发生了变化,使得一个项目中的引用可以“渗透”到另一个项目中。
在较早版本的.NET中,被项目“X”所引用的程序集不会暴露给引用项目“X”的其他解决方案中的项目。
例如,如果您有一个“Domain”项目引用了“Entity Framework”,将该“Domain”项目的引用添加到解决方案中的另一个项目中,并不能让该项目访问任何“Entity Framework”类。
这是一件好事情(至少在我看来是这样)。
今晚我在一个.NET Core 2.1应用程序中试验时,创建了一个利用EF Core的域项目。
然后我创建了一个单元测试项目(迫不及待地想要利用新的EF Core InMemory提供程序),并引用了我的域项目。
令我完全措手不及的是,即使我没有将EF Core NuGet包带入到单元测试项目中,该项目也能够访问EF Core类; 我唯一的假设是它能够通过我的域项目访问EF,即:
这似乎是极为不可取的;在我的单元测试中,我并不太关心引用与其他项目(如ASP.NET Core Web项目)之间的引用泄漏,但当涉及到其他项目时,我非常关心这种引用泄漏。
是否有一种方式可以隐藏/保护我的Domain项目中的这些包引用,使其不被引用它的其他项目所看到?
PrivateAssets
也可以与已引用的项目一起使用。 - jgasiorowski