在.NET的早期版本中,项目“X”引用的程序集未公开给引用项目“X”的解决方案中的其他项目.
因此,例如,如果您有一个引用实体框架的域项目,则将该域项目的引用添加到解决方案中的另一个项目将不会授予其他项目访问任何实体框架类的权限.
这是一件好事(至少在我看来).
今晚正在使用.NET Core 2.1应用程序,并创建了一个域项目
它利用了EF Core.
然后,我创建了一个单元测试项目(热切希望利用新的EF Core InMemory提供程序),并引用了我的域项目.
令我措手不及的是单元测试项目能够访问EF Core类,即使我没有将EF Core NuGet包带入单元测试项目;我唯一的假设是它能够通过我的域项目访问EF,即:
这似乎非常不受欢迎;我对单元测试中的引用流失并不太在意,但在我的解决方案中使用其他项目(例如ASP.NET Core Web项目)时,我非常关心这种类型的引用流失.
有没有办法隐藏/屏蔽我的Domain项目中的这些包引用与引用它的其他项目?
解决方法
不过要看看这个
PrivateAssets These assets will be consumed but won’t flow to the
parent project
和标签
compile Contents of the lib folder and controls whether your project
can compile against the assemblies within the folder
右键单击类库 – >依赖关系 – > Nuget – >打包,并将PrivateAssets设置为单词compile …我似乎能够在调用.Net Core项目中使用(并隐藏依赖项).
免责声明,我真的只是出于好奇而玩这个设置,并不确定是否有任何副作用这样做