.NET 7 包含泛 型數學 API,這些 API 會在基本類型上使用 static abstract
介面成員,例如 Int32。 舊版的 C++/CLI 編譯程式與這類成員不相容。 由於這些成員會用於許多基本類型,因此即使未直接使用泛型數學特徵,編譯錯誤也會在以 net7.0
為目標時發生。
除了 C++/CLI 之外,在原始static abstract
類型上引入System介面成員也可能會在其他開發工具中產生與此新語言結構使用方式不相容的問題。 如果您是工具作者,您必須更新此變更所影響的任何工具,以便使用 static abstract
介面成員。 如果您需要協助, 請在 dotnet/runtime 存放庫中提出問題 以要求指引。
先前的行為
先前,使用 C++/CLI 編譯 .NET 專案不會產生與基本 System 類型成員相關的錯誤。
新行為
在 net7.0
17.2 版之前的 Visual Studio 版本中使用 C++/CLI 編譯專案,將會產生許多類似此範例的錯誤:
error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function
除了升級之外,無法解決這個編譯程序錯誤。 因為在基本static abstract
類型上存在System介面成員,所以它會被產生。 當您升級至Visual Studio 2022 17.2版時,編譯錯誤將不再發生。
您可以叫用隱式實作的static abstract
介面成員,但即使是使用Visual Studio 2022 17.2版,C++/CLI仍然不支援叫用顯式實作的static abstract
介面成員。
推出的版本
.NET 7
破壞性變更的類型
這項變更可能會影響 來源相容性。
變更的原因
.NET 7 包含 泛型數學 特徵集的新 API 定義。 這些 API 是在 .NET 6 中引進的預覽功能,並要求您安裝 System.Runtime.Experimental
套件以取得存取權。 從 .NET 7 開始,這些泛型數學 API 會包含在「方塊中」。
建議的動作
若要繼續使用 C++/CLI 搭配 .NET 7,請升級至 Visual Studio 2022 17.2 版或更新版本。 您可能也需要將 平臺工具組 設定為 v143。
如果您在升級至 .NET 8 時略過 .NET 7,請升級至 Visual Studio 2022 17.8 版或更新版本,以及 平臺工具組 v143 或更新版本。
受影響的 API
N/A