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

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

内容简介: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 "  />

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


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

查看所有标签

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

Compilers

Compilers

Alfred V. Aho、Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman / Addison Wesley / 2006-9-10 / USD 186.80

This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised ......一起来看看 《Compilers》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具