.NET Core项目依赖"流血"

RMD*_*RMD 8 c# reference entity-framework-core .net-core

.NET Core中的引用封装似乎已经改变,允许一个项目中的引用"流血"到另一个项目中.

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

因此,举例来说,如果你有一个域名,其引用的项目实体框架,增加了一个参考解决方案中的项目,另一个项目不会给予其他项目获得的任何实体框架类.

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

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

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

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

参考出血的示例

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

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

AAA*_*ddd 5

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

不过要看看这个

控制依赖资产

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

和标签

编译 lib文件夹的内容,并控制您的项目是否可以针对文件夹中的程序集进行编译

右键单击Class library -> Dependencies -> Nuget -> Package,并设置PrivateAssets为单词compile...我似乎能够在调用.Net Core项目中使用(并隐藏依赖项).

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