我構建了一個 C# 應用程式,我的目標框架是 .NET Framework 4.72。雖然我使用了 TDengine C# 連接器,但它的目標框架是 .NET Standard 2.1 和 .NET 5。
雖然我在專案中參考了這些包,但在構建時總是會出錯,這表示方法 marshal.
Marshal.StringToCoTaskMemUTF8(字串)
不在框架 4.7.2 中。
我很困惑,因為在我看來 4.7.2 應該是低于 .NET 5 的版本。這應該是兼容的。
那么 .NET Standard 與 .NET Framework .NET 5、6、7 之間有什么區別。這些名稱總是讓我感到困惑。有誰知道如何區分它們或建議一些文章來幫助我了解它們。
uj5u.com熱心網友回復:
是的,這很令人困惑!
.NET Core 是對 .NET Framework 的重寫,以使其獨立于平臺。它與經典的 .NET Framework(.NET 直到 4.8 版)有許多不兼容的地方。.NET 5 及更高版本的較新版本基于 Core fork,因此直到 4.8 才與舊版本完全兼容。
.NET Standard 試圖創建一個在所有版本之間都兼容的通用子集。因此,如果您針對 .NET Standard 進行編程,您的代碼將同時適用于 4.8 分支和 Core 分支。不幸的是,MS 通過制作與 .NET 4.8不兼容的 .NET Standard 版本搞砸了這一點。他們這樣做可能是出于對 .NET 開發人員的惡意。
主要的 .NET 框架版本:
.NET Framework 1.0 -> .NET Framework 2.0 -> .NET Framework 3.0 -> .NET Framework 3.5 -> .NET Framework 4.0 -> .NET Framework 4.8
主要的 .NET Core 版本:
.NET 核心 1 -> .NET 核心 2 -> .NET 核心 3 -> .NET 5 -> .NET 6
uj5u.com熱心網友回復:
由于確實令人困惑,我最近試圖自己弄清楚。這是我想出的:
.NET 和 .NET Core是.NET Framework的繼承者。
從版本 5 開始,.NET Core 僅稱為 .NET:
- .NET 核心 1.0
- .NET 核心 1.1
- .NET 核心 2.0
- .NET 核心 2.1
- .NET 核心 2.2
- .NET 核心 3.0
- .NET 核心 3.1
- .NET 5
- .NET 6
- .NET 7
- .NET 8
.NET Framework 從版本 1.0 運行到 4.8,版本號無法分別與 .NET Core 或 .NET 的版本號進行比較。
.NET Standard 本身不是框架或平臺。它只是將 .NET 實作的規范(標準)設定為“符合 .NET 標準”。在這里,您可以看到不同 .NET Standard 版本以及它們支持的 .NET 實作和版本的串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/474950.html
