Asp.net-Core

Microsoft.AspNetCore.All 元包的優缺點

  • September 11, 2019

ASP.NET Core 2.0無需在文件中包含個人package references。metapackage 包含所有必需的包。我們可以在文件中包含這個元包:.csproj``Microsoft.AspNetCore.All``.csproj

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />

這個元包在 .Net Core 應用程序中的主要優點和缺點是什麼?(也考慮跨平台自包含應用程序)

當您創建針對 .NET Core 2.0 執行的 ASP.NET Core 2.0 應用程序時,您應該使用Microsoft.AspNetCore.All(對於 ASP.NET Core 2.1 及更高版本,Microsoft.AspNetCore.App建議使用 - 從 ASP.NET Core 3.0Microsoft.AspNetCore.All將被刪除),因為這是推薦的方法並且是對於避免一長串依賴項很有用。

發布(自包含)應用程序時,將應用 tree-shaking,這意味著:建構過程將找出元包中的哪些包將被使用,並將它們從發布的文件夾中刪除以保持較小的大小。

使用它的另一個原因是.NET Core Runtime Store。該Microsoft.AspNetCore.All包是執行時儲存的一部分,因此不需要發布(如上所述),但更重要的是,它是預編譯的,因此啟動時間也得到了改善。

然而

  1. 以 .NET Framework >= 4.6.1 為目標時不能使用Microsoft.AspNetCore.All(或Microsoft.AspNetCore.App),因為它分別需要netcoreapp2.0netcoreapp2.1
  2. 您不能也不應該在可移植類庫 (PCL) 中使用它,因為它需要netcoreapp2.0並且 PCL 應該以netstandard2.0. 有一些例外情況,例如,如果您依賴僅在 .NET Core 上執行的 (ASP.NET Core) 包(或者您需要僅 .NET Core API),因為 PCL 目標netcoreappx.y無法在 .NET Framework 上執行

引用自:https://stackoverflow.com/questions/46592816