2017-10-05 212 views
0

ASP.NET Core 2.0中,不需要在.csproj文件中包含單個package referencesMicrosoft.AspNetCore.All metapackage包含所有必需的軟件包。我們可以包括.csproj文件作爲該綜合包:Microsoft.AspNetCore的優點和缺點。所有元包

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

什麼是這個元數據包中的.Net核心應用的主要優點和缺點? (也考慮跨平臺自包含的應用程序)

+4

是的,這是很好的做法。好的做法是由框架作者定義的,以及那些爲了簡單起見而創建了意圖替換單個導入的元軟件包的人。 – poke

+0

「Microsoft.AspNetCore.All」包有助於防止依賴版本的惡化。 – Ignas

+0

主要問題:您無法降級「元包」中的任何內容以符合其他包的要求。例如,Azure堆棧大部分停留在Json.NET 9.0.1上,但是這個傾倒地包對10.0.1聲明瞭最小的依賴關係,這會破壞Azure堆棧。 – McGuireV10

回答

6

當您創建運行在.NET Core 2.0上的ASP.NET Core 2.0應用程序時,應該使用Microsoft.AspNetCore.All,因爲這是推薦的方法,可用於避免長列表的依賴關係。

發佈時,將會應用樹狀結構,這意味着:構建過程將查找元包中的哪些包將被使用,並將它們從發佈的文件夾中去除以保持較小的尺寸。

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

然而

  1. 你不能針對.NET框架> = 4.6.1當使用Microsoft.AspNetCore.All,因爲它需要netcoreapp2.0
  2. 你不能,不應該在可移植類庫使用它( PCL),因爲它需要netcoreapp2.0,而PCL應該以netstandard2.0爲目標(例如,如果您依賴僅在.NET Core上運行的(ASP.NET Core)包,則有一些例外,因爲定位爲netcoreappx.y的PCL可以運行於.NET Framework上