阻止新的csproj工程的dll引用继承

栏目: 编程语言 · 发布时间: 6年前

内容简介:VisualStudio传统的csproj工程中,引用是没有继承功能的。例如,对于如下一个引用关系程序App在没有添加Assembly 2的引用的情况下,是不能直接访问Assembly 2的方法的。我们必须手动添加Assembly 2的引用。

VisualStudio传统的csproj工程中,引用是没有继承功能的。例如,对于如下一个引用关系

阻止新的csproj工程的dll引用继承

  1. App引用Assembly 1

  2. Assembly 1引用Assembly 2

程序App在没有添加Assembly 2的引用的情况下,是不能直接访问Assembly 2的方法的。我们必须手动添加Assembly 2的引用。

在VisualStudio 2017中,Visua Studio引入了一个新的csproj格式(默认应用在.net core程序中启用),新格式下dll引用是默认可以继承的,也就是说,App可以直接访问没有引用的程序及Assembly 2的。

在大部分场景下,这是一个非常好的特性,大大减少了我们手动引用dll的操作。但是,有的时候,这个却不是我们想要要的结果,例如如下的场景:

阻止新的csproj工程的dll引用继承

Assembly2为原始的DB API,我在Assembly1中对它进行了封装成了API Wrapper。但是,由于程序集引用的继承,在APP中仍然可以访问原始的DB API。这个就不是我们想要的效果了。

另外,默认继承也会带带如下问题

  1. 不同项目中的程序集聚合导致名字空间污染

  2. 程序集继承引用导致智能提示中增加不少不感兴趣的候选项。

对于这些种情况,VisualStudio中也是提供了较好的解决方案的,那就是在PackageReference或ProjectReference中,增加PrivateAssets="All"设置即可。

< PackageReference   Include = " Microsoft.AspNetCore.Razor.Design "   Version = " 2.1.2 "   PrivateAssets = " All "  />

这样,引入的程序集就不会向下传递了。关于该特性的更多描述,可以参考微软官方文档:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员成长的烦恼

程序员成长的烦恼

吴亮、周金桥、李春雷、周礼 / 华中科技大学出版社 / 2011-4 / 28.00元

还在犹豫该不该转行学编程?还在编程的道路上摸爬滚打?在追寻梦想的道路上你并不孤单,《程序员成长的烦恼》中的四位“草根”程序员也曾有过类似的困惑。看看油田焊接技术员出身的周金桥是如何成功转行当上程序员的,做过钳工、当过外贸跟单员的李春雷是如何自学编程的,打小在486计算机上学习编程的吴亮是如何一路坚持下来的,工作中屡屡受挫、频繁跳槽的周礼是如何找到出路的。 《程序员成长的烦恼》记录了他们一步一......一起来看看 《程序员成长的烦恼》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换