本文為翻譯文章,原文:Packages, Metapackages and Frameworks

 

.NET Core是一個由NuGet包組成的平臺。一些產(chǎn)品受益于細粒度包的定義,也有一些受益于粗粒度包的定義。為了適應(yīng)這種二重性,.NET Core平臺被分為一組細粒度的包(package)以及一些被稱為元包(metapackage)的較粗粒度的包。

 

每一個.NET Core包支持多個.NET運行時,它們代表著不同的框架。這些框架既包括傳統(tǒng)的.NET Framework(如net4.6),也包含基于包的新框架,這些新框架建立了定義框架的新模型。這些基于包的框架完全由包定義而成,包與框架之間形成較強的關(guān)聯(lián)關(guān)系。

 

.NET Core由一組包構(gòu)成,這些包提供了基元類型、高級數(shù)據(jù)類型、應(yīng)用程序組成類型和一些常見的實用工具。每一個包表示一個和包同名的程序集,如, System.Runtime包中含有System.Runtime.dll程序集。

定義細粒度的包有如下好處:

  • 細粒度的包在開發(fā)、測試過程中與其它包的關(guān)聯(lián)有限

  • 細粒度的包可以提供對不同操作系統(tǒng)和CPU的支持

  • 細粒度的包可以只依賴某個特定的庫

  • 在發(fā)布應(yīng)用時,未被引用的包不會成為應(yīng)用的一部分,因此應(yīng)用程序會有更小的體積

有些細粒度包的優(yōu)點只會在特定場景中表現(xiàn)出來。如,通常.NET Core 的所有包會在同一計劃內(nèi)提供對同一平臺的支持。這種情況下,補丁會以小的單個更新包的形式發(fā)布和安裝。由于這種小范圍的變化,驗證補丁是否可用所花費的時間,可以限制到對單個庫的需求中。

下面列出了.NET Core平臺上的一些關(guān)鍵NuGet包: