02、NetCore2.0优化之Nuget包
在NetCore2.0中的包是如何管理的?如何存储的?微软做了哪些优化工作?
------------------------------------------------------------------------------------------------------------
写在前面:这是一个系列的文章,总目录请移步:NetCore2.0技术文章目录
------------------------------------------------------------------------------------------------------------
一、历史问题
在.NetCore 2.0之前,我们开发.Net应用程序,引用的包分为Framework包和第三方包两种,其中第三方类库文件都要随着应用一起存储,文件越多,越占存储空间。随着.NetCore 2.0出现,微软统一使用Nuget来管理Framework包和第三方包,不再区别对待;还进行了一定范围内的优化。
二、.优化的运行时包仓
对于应用程序引用的Framework包,微软提供了运行时包仓(runtime package store),所有应用程序共用运行时包仓,我们在发布应用程序的时候不需要关心,只要关注第三方包即可。
运行时包仓路径一般为:
- linux:/usr/local/share/dotnet/store
- windows: C:/Program Files/dotnet/store
三、优化的第三方包仓
其中第三方包也不是每个App下载一份,而是统一存储在一个文件下:
- C:\Users\Administrator\.nuget\package
只有发布的时候才会随App一起部署。
四、元包
元包就是一个 NuGet 包约定,描述了一组意义相关的包。 开发团队利用依赖项来描述这一组包。 他们通过这一组包来描述一个框架,然后有选择地发布出去。使用 ASP.NET Core 2.0 只需要安装一个 NuGet 元包 —— Microsoft.AspNetCore.All,省去了一个个添加包的步骤;发布时会自动排除没有用到的包。