2017-06-29 196 views
0

我將我的應用程序從VS2015移植到VS2017,並試圖找出正確的移植路徑。我還將我的Web服務遷移到.NET Core,以充分利用部署到Linux或Windows服務器的優勢。我發現我可以選擇在.NET Standard或.NET Core中創建基本庫。 .NET Core庫有沒有優勢,或者我應該默認在.NET Standard中創建基礎庫?.NET標準庫的.NET Core庫有沒有優勢?

回答

4

實際上,.NET Standard 2.0是.NET Framework 4.6.2(-ish)和.NET Core 2.0的交集。

如果您構建一個面向.NET標準2.0的庫,那麼您的庫可以被.NET Framework庫和應用程序以及.NET Core庫和應用程序使用。這是Standard的優勢。

但是有幾種類型/成員已被添加到.NET Core中,其中不是 .NET標準的一部分。如果你想使用類似新的CertificateRequest類,你需要明確的目標.NET核心。因爲一般的折衷將總是「.NET標準=>更多地方; .NET核心=>更新的東西」。因此,.NET核心允許新的東西比.NET框架更快地到達用戶。

+0

我同意這一點。看起來有些軟件包只能用於.NET Core,所以如果你的庫需要使用這些軟件包中的一個,那麼你就有理由使用.NET Core。否則,它看起來像.NET標準是我們應該用於共享庫的。 –

-2

.Net Standard只是封裝接口與可用於提供跨.Net Framework.Net Coreothers

+0

謝謝,但我有一個大致的想法是什麼。鑑於這一點,是否有任何**的優勢**選擇.NET標準的庫類型的.NET核心?鑑於.NET標準的普遍性,在什麼條件下你想選擇基本庫的.NET Core? –

+1

如果你知道它是什麼,你應該知道什麼是最適合你的。如果你選擇'.Net Standard',那麼你需要提供這個iterfaces的實現(例如'.Net Core'或'.Net Framework'),並且可以使用Nuget包作爲'.Net Standard',但記住 - 只有'。 Net Core的實現是完全多平臺的。因此,如果你想將你的應用程序部署到'Linux或Windows',那麼只選擇'.Net Core'或'.Net Standard',只需要'.Net Core' –

-2

我不會選擇一個.NET核心庫的兼容性。差異是在引用的庫:

  • 的.NET標準庫引用netstandardX.X的NuGet元包
  • 的.NET核心庫引用netcoreappX.X的NuGet元包

netcoreapp軟件包還包括一些.NET標準軟件包,但也包括一堆.NET Core應用程序特定軟件包(包括libuv。不知道庫爲什麼需要libuv)。

因此,.NET標準庫適用於跨平臺和.NET核心庫僅用於.NET Core