通过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无需指定版本号的原因)
参考文章:
通过Microsoft.AspNetCore.App元包简化程序集的引用的更多相关文章
- linux,发布.netcore填坑,自动升级core版本后,运行报错:'Microsoft.AspNetCore.App', version '3.0.0' was not found.
近来有点空,所以研究下,netcore这个神器~ 号称跨平台的利器,从此net不在局限于windows服务器了,早点该多好呀,这样我们net程序员,不香吗? 网上搜,‘netcore 发布liu ...
- .NET Core 3.0或3.1 类库项目中引用 Microsoft.AspNetCore.App
本文为原创文章.首发:http://www.zyiz.net/ 在 ASP.NET Core 3.0+ web 项目中已经不需要在 .csproj 中添加对 Microsoft.AspNetCore. ...
- .NET Core中的包、元包与框架
本文为翻译文章,原文:Packages, Metapackages and Frameworks .NET Core是一个由NuGet包组成的平台.一些产品受益于细粒度包的定义,也有一些受益于粗粒度包 ...
- ABP 找不到版本为 (>= 1.0.0-preview1-27891) 的包 Microsoft.AspNetCore.SignalR 错误
错误描述: 下载ABP模板项目3.4.1的版本(当前最新版本),编译加载nuget包Microsoft.AspNetCore.SignalR时会报如下错误: 严重性 代码 说明 ...
- .Net Core 学习笔记1——包、元包、框架
.Net Core 是由NuGet包(package)组成的平台. 一起使用的多个包的集合:元包(Metapackage) package 包 (对应以前的程序集概念) Framework 框架 as ...
- .Net Core 中的包、元包与框架(Packages, Metapackages and Frameworks)
包,元包与框架 本文翻译自 Packages, Metapackages and Frameworks. .Net Core 是一种由 NuGet 包组成的平台.一些产品体验受益于代码包的细粒度定义, ...
- 使用Microsoft.AspNetCore.TestHost进行完整的功能测试
简介 Microsoft.AspNetCore.TestHost是可以用于Asp.net Core 的功能测试工具.很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测 ...
- asp.net core 3.1 引用的元包dll版本兼容性问题解决方案
自从.netcore 3.1出来后,大家都想立马升级到最新版本.我也是如此,微软也对.netcore 3.1的官方组件不断升级,几乎每隔几天就会有部分元包可以升级.每次打开Nuget包管理器,“更新” ...
- UWP Jenkins + NuGet + MSBuild 手把手教你做自动UWP Build 和 App store包
背景 项目上需要做UWP的自动安装包,在以前的公司接触的是TFS来做自动build. 公司要求用Jenkins来做,别笑话我,之前还真不晓得这个东西. 会的同学请看一下指出错误,不会的同学请先自行脑补 ...
随机推荐
- Ex 6_9 某个字符串处理语言提供了一个将字符串一分为二的基本操作..._第六次作业
设字符串的长度为n,整型数组arr[0. . .n-1]的第一个数和最后一个数为开始点与结束点的位置,中间的数为拆分点的位置,设cost[i,j]为第i个分割点到第j个分割点的最小代价,两个分割点之间 ...
- 类(字符串型;日期时间型;Math)
- Win7 x64 svn 服务器搭建
SVN服务器搭建和使用 Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了 ...
- jQuery .on() and .off() 命名空间
jQuery .on() and .off() 命名空间 博客分类: 生活 前端开发 jQuery1.7开始,jQuery引入了全新的事件绑定机制,jQuery .on() 和 off() 两个函 ...
- php三种常用的加密解密算法
方法一: /** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCODE 加密:DECODE 解密 * @param stri ...
- python 全栈开发,Day123(图灵机器人,web录音实现自动化交互问答)
昨日内容回顾 . 百度ai开放平台 . AipSpeech技术,语言合成,语言识别 . Nlp技术,短文本相似度 . 实现一个简单的问答机器人 . 语言识别 ffmpeg (目前所有音乐,视频领域,这 ...
- String:(字符串)中常用的方法
package stringyiwen; //字符串中常用的方法public class StringTest03 { public static void main(String[] args) { ...
- java基础篇---HTTP协议
java基础篇---HTTP协议 HTTP协议一直是自己的薄弱点,也没抽太多时间去看这方面的内容,今天兴致来了就在网上搜了下关于http协议,发现有园友写了一篇非常好的博文,博文地址:(http: ...
- MyEclipse10中启动出现OutOfMemoryError: PermGen space如何解决
一篇关于技术的文档,分享给大家.在MyEclipse中启动程序运行,报错java.lang.OutOfMemoryError: PermGen space应该怎么办?这是eclipse 内存不够的原因 ...
- mysql批量插入数据优化
一.问题 很早以前做了一个更新功能,就是将A表中的数据全部查找出来,相对B表中改变的数据更新B表,B表中没有的数据插入B表. 最近发现该功能执行速率减慢,有时还跑超时.原来是A表中数据渐渐变多,就有了 ...