ASP.NET?Core通过Microsoft.AspNetCore.App元包简化程序集引用
更新时间:2022-07-18 14:12:17 作者:佚名 我要评论(0)
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无需指定版本号的原因)
参考文章:
包、元包和框架
ASP.NET Core的 Microsoft.AspNetCore.App 元包
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- asp.net core3.1 引用的元包dll版本兼容性问题解决方案
- Asp.net core中依赖注入的实现
- Asp.net core利用dynamic简化数据库访问
- Asp.net core实现PushStream视频流推送
- 在Asp.net core中实现websocket通信
- ASP.Net Core基于ABP架构配置To Json序列化
- Asp.net?core前端框架Blazor介绍
您可能感兴趣的文章:
相关文章
ASP.NET?Core通过Microsoft.AspNetCore.App元包简化程序集引用
Asp.net core下提供默认提供了一些在.net core不能直接使用的库,如日志、依赖注入、选项、通用主机、EntityFramework等,虽然我们可以通过N2022-07-18.net+FusionChart实现动态显示的柱状图和饼状图
html代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"2022-07-18在.Net?Framework应用中请求HTTP2站点的问题解析
目录背景介绍什么是HTTP2及依赖条件Windows 对HTTP2的支持情况?Windows对TLS1.2的支持情况?.Net Framework对HTTP2的支持情况?.Net Framew2022-07-18在VSCode里使用Jupyter?Notebook调试Java代码的详细过程
目录什么是Jupyter Notebook?Jupyter Notebook主要优点环境准备下载 IJava创建conda虚拟环境搭建运行环境测试之前使用的那台电脑有点旧了,2022-07-15
最新评论