通过Microsoft.AspNetCore.App元包简化程序集的引用
Asp.net core下提供默认提供了一些在.net core不能直接使用的库,如日志、依赖注入、选项、通用主机、EntityFramework等,虽然我们可以通过Nuget的方式手动加载这些包,但这些包大多分得很细,往往会引入许多依赖的相关的包,造成动不动就引入了七八个dll的情况。虽然对于设计上来讲,包的粒度划分的细一些本身是更合理的行为,并且对实际的功能也没有什么影响,但对于很多像我一样有编程洁癖行为的开发者来说看着文件夹下一大堆和业务无关的dll多多少少有些不爽的。
可能微软也了解了我们的这一需求,推出了了元包这个概念。 元包就是一个 NuGet 包约定,描述了一组意义相关的包。 开发团队利用依赖项来描述这一组包。 他们通过这一组包来描述一个框架,然后有选择地发布出去。以某个框架为目标以及隐式引用元包,这实际上是添加了对元包中每一个独立包的引用依赖。同时也可用于发布应用。
使用元包具有以下好处:
- 在引用大量细粒度包方面,提供了一种方便的用户体验。
- 定义了一组经过充分测试且运行良好的包(包括指定的各种版本)。
.NET Core 元包有:
- Microsoft.NETCore.App - .NET Core 发行版的部分库。 也就是 .NETCoreApp 框架。
- Microsoft.AspNetCore.App - 包含来自 ASP.NET Core 和 Entity Framework Core 的所有受支持的包(包含第三方依赖项的包除外)。
- Microsoft.AspNetCore.All – 在Microsoft.AspNetCore.App基础上包含了第三方依赖项的所有受支持包。 (这个不推荐了,建议使用Microsoft.AspNetCore.App)
- Microsoft.NETCore.Portable.Compatibility - 一组兼容外观,使基于 mscorlib 的可移植类库(PCL) 得以在 .Net Core上运行。
有了这个基础后,也就是说,只要我们在项目中包含Microsoft.AspNetCore.App元包,就可以直接使用前面提到的那些库了。
方法很简单,在csproj中添加Microsoft.AspNetCore.All中即可。
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
在.net 3.0中,需要使用FrameworkReference代替PackageReference ,效果如下
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
添加了这个引用后,我们就可以和Asp.net core程序中一样使用那些额外的库了,发布程序的时候也不用附带那些dll了。实际上,这些dll是指向了.net core SDK中的那些dll了,无需额外发布。(这个也就是为什么PackageReference无需指定版本号的原因)
参考文章:
最新文章
- Android 自带后退按钮的使用
- 基于redis分布式缓存实现(新浪微博案例)
- ELK+redis搭建nginx日志分析平台
- PHP PSR规范
- OC第三节——NSArray和NSMutableArray
- UVa 10562看图写树(二叉树遍历)
- 菜鸟学习Hibernate——配置Hibernate环境
- hdu 3804 树链剖分
- Android:Context的作用
- Hibernate配置文件解释
- SecurityException:Not allowed to start service Intent ,without permission not exported from
- C++与Java通过WebService通信(上)
- 你云我云•兄弟夜谈会 第二季 5G
- Lodop背景图无图片时显示放大叉号问题
- asyn proposals
- 11:self关键字
- 自动化测试基础篇--Selenium unittest生成测试报告(HTMLTestRunner)
- Android 模拟机出现Installation failed due to invalid URI!错误
- pytorch中词向量生成的原理
- VS2015 下载 破解
热门文章
- centos6.5下java和tomcat环境部署
- JS/Jquery版本的俄罗斯方块(附源码分析)
- PYTHON-面向对象 继承 派生
- Eclipse通过jdbc连接sqlserver2008数据库的两种方式
- raindi python魔法函数(一)之__repr__与__str__
- 洛谷P3865 ST表
- mysql 5.6 在线 DDL
- PHP实现删除字符串中任何字符的函数
- bzoj2243树链剖分+区间合并
- PyCharm Professional破解版和汉化下载地址-new