.NET核心中的引用封装似乎已经发生了变化,允许一个项目中的引用“出血”到另一个项目中。
在.NET的早期版本中,由项目"X“引用的程序集不向引用项目"X”的解决方案中的其他项目公开。
因此,例如,如果您有一个引用实体框架的域项目,则将对该域项目的引用添加到您的解决方案中的另一个项目中将不会授予该其他项目对任何实体框架类的访问权限。
这是件好事(至少在我看来是这样)。
今晚玩了一个.NET Core2.1应用程序,并创建了一个利用EF Core的域项目。
然后,我创建了一个单元测试项目(热切期望利用新的EF核心InMemory提供程序),并引用了我的域项目。
完全让我猝不及防的是,即使我没有将EF核心NuGet包带到单元测试项目中,单元测试项目仍然能够访问EF核心类;我唯一的假设是它能够通过我的域项目访问EF,即:
这似乎非常不可取;我并不太关心单元测试中的引用溢出,但在处理我的解决方案中的其他项目(如ASP.NET Core Web项目)时,我确实非常关心这种引用溢出。
有没有办法隐藏/屏蔽我的域项目中的这些包引用,使其不被其他引用它的项目所引用?
发布于 2018-06-10 08:31:24
这是一件奇怪的事情,我以前从来没有注意到过,
然而,看看这个。
PrivateAssets这些资产将被使用,但不会流向父项目
和标签
编译库文件夹的内容,并控制项目是否可以针对该文件夹中的程序集进行编译
右键单击Class library -> Dependencies -> Nuget -> Package
,并将PrivateAssets
设置为单词compile
...我似乎能够在一个调用.Net核心项目中使用(但又隐藏了依赖关系)。
免责声明,我只是出于好奇才使用这个设置,并且不确定这样做是否有任何副作用
https://stackoverflow.com/questions/50779242
复制相似问题