.NET Core项目依赖性“流血”

时间:2018-06-09 23:01:41

标签: c# reference .net-core entity-framework-core

.NET Core中的引用封装似乎已经改变,允许一个项目中的引用“渗透”到另一个项目中。

在.NET的早期版本中,项目“X”引用的程序集未公开给引用项目“X”的解决方案中的其他项目。

例如,如果您有一个引用实体框架项目,则将该项目的引用添加到另一个项目中您的解决方案不会授予其他项目访问任何Entity Framework类的权限。

这是一件好事(至少在我看来)。

今晚正在使用.NET Core 2.1应用程序,并创建了一个域项目 它利用了EF Core。

然后我创建了一个单元测试项目(急切希望利用新的EF Core InMemory提供程序),并引用了我的域项目。

让我措手不及的是单元测试项目能够访问EF Core类,即使我没有将EF Core NuGet包带入单元测试项目;我唯一的假设是它能够通过我的域项目访问EF,即:

Example of the reference bleed

这似乎非常不受欢迎;我在单元测试中对引用流失并不太在意,但在我的解决方案中使用其他项目(例如ASP.NET Core Web项目)时,我非常关心这种类型的引用流失。

有没有办法隐藏/屏蔽我的项目中的这些包引用与引用它的其他项目?

1 个答案:

答案 0 :(得分:5)

这是一件奇怪的事情,我之前从未注意过,

但是看看这个

Controlling dependency assets

  

PrivateAssets 这些资产将被消耗,但不会流向   父项目

标签

  

编译 lib文件夹的内容并控制您的项目   可以针对文件夹

中的程序集进行编译

右键单击PrivateAssets,然后将compile设置为单词{{1}} ...我似乎能够在调用的.Net Core项目中使用(并隐藏依赖项)

免责声明,我真的只是出于好奇而玩这个设置,并不确定这样做是否有任何副作用