通過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
添加了這個引用後,我們就可以和Asp.net core程式中一樣使用那些額外的庫了,釋出程式的時候也不用附帶那些dll了。實際上,這些dll是指向了.net core SDK中的那些dll了,無需額外發布。(這個也就是為什麼PackageReference無需指定版本號的原因)