Dot-Net

netcoreapp2.0 與 netstandard2.0 對於庫項目的優勢

  • August 26, 2017

我有一個預先存在的 dotnet 4.6.2 解決方案,它由兩個外部項目(同時移植)和一個共享core庫組成。

我需要選擇核心組件的TargetFramework,可以是netcoreapp2.0netstandard2.0

由於它不可執行,或被任何外部項目引用,是否有任何一種方式或其他方式的優勢?

它們的性質不同:

每個版本的 .NET Core 庫都實現(至少)一個給定版本的 .NET Standard,完整的表格可以在.NET Standard 文件中找到。現在,最新版本是同步的(2.0 - 2.0),但這不是而且不會總是如此。

.NET Core 庫實際上始終是 .NET Standard 相應版本中定義的 API 的超集。.NET Core 庫中始終有可用的類型和成員,它們不是(還不是?).NET 標準的一部分。Microsoft 發布了可用 API 的逐個命名空間比較

您的庫可能使用尚未在 .NET Standard 中標準化(或可能永遠不會)但已在 .NET Core 庫中可用的 API。例如,您可以使用 System.Drawing 命名空間中的類型,這些類型很快將在 .NET Core 庫中可用,但不會成為 .NET Standard 2.0 的一部分。

因此,通過選擇 netcoreapp2.0 而不是 netstandard2.0,您可以訪問更大的 API,但會犧牲兼容性。

一般來說,您應該始終嘗試針對最便攜的框架(此處為 netstandard)

如果它不適合您,那麼下一個最好的方法是從單個庫中跨多個框架,如下所述:How do you multi-target a .NET Core class library with csproj? . .NET Standard 中缺少的許多 .NET Core API 也存在於(完整的).NET Framework 中。

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