[英]Difference between .NET Framework, .NET Standard, .NET Core and .NET 5
我構建了一個 C# 應用程序,我的目標框架是 .NET Framework 4.72。 當我使用TDengine C# 連接器時,它的目標框架是 .NET Standard 2.1 和 .NET 5。
當我在項目中引用這些 package 時,我在構建時總是出錯,它說方法 marshal.
Marshal.StringToCoTaskMemUTF8(字符串)
不在 Framework 4.7.2 中。
我很困惑,因為在我看來 4.7.2 應該是低於 .NET 5 的版本。這應該是兼容的。
那么 .NET Standard 與 .NET Framework .NET 5、6、7 之間有什么區別。這些名稱總是讓我感到困惑。 有誰知道如何區分它們或推薦一些文章來幫助我了解它們。
因為它確實令人困惑,所以我最近試圖自己弄清楚。 這是我想出的:
.NET 和 .NET Core是.NET Framework的繼承者。
從 Version 5 開始,.NET Core 只被稱為 .NET:
.NET Framework從1.0版本運行到4.8版本,版本號無法分別與.NET Core或.NET進行比較。
.NET 標准本身不是框架或平台。 它只是將 .NET 實現的規范(標准)設置為“.NET 標准兼容”。 在這里,您可以看到不同的 .NET 標准版本及其支持的 .NET 實現和版本的列表。
是的,這很令人困惑!
.NET 核心是對 .NET 框架的重寫,以使其與平台無關。 它與經典的 .NET 框架(.NET 4.8 之前的版本)有許多不兼容之處。 .NET 版本 5 及以后的新版本基於 Core 分支,因此直到 4.8 才與舊版本完全兼容。
.NET Standard 試圖創建一個在所有版本之間兼容的通用子集。 因此,如果您針對 .NET 標准進行編程,您的代碼將同時適用於 4.8 分支和核心分支。 不幸的是,微軟通過制作一個與 .NET 4.8不兼容的標准版本 .NET 來搞砸了。 他們這樣做可能是出於對 .NET 開發人員的惡意。
主要 .NET 框架版本:
.NET 框架 1.0 -> .NET 框架 2.0 -> .NET 框架 3.0 -> .NET 框架 3.5 -> .NET 框架 4.0 -> .NET 框架 4.8
主要 .NET 核心版本:
.NET 核心 1 -> .NET 核心 2 -> .NET 核心 3 -> .NET 5 -> .NET 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.