加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .NET核心项目依赖“流血”

发布时间:2020-12-15 08:01:55 所属栏目:百科 来源:网络整理
导读:.NET Core中的引用封装似乎已经改变,允许一个项目中的引用“流血”到另一个项目中. 在.NET的早期版本中,项目“X”引用的程序集未公开给引用项目“X”的解决方案中的其他项目. 因此,例如,如果您有一个引用实体框架的域项目,则将该域项目的引用添加到解决方案
.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项目中的这些包引用与引用它的其他项目?

解决方法

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

不过要看看这个

Controlling dependency assets

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项目中使用(并隐藏依赖项).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读