Visual Studio 中的 C++/CLI 專案

.NET 7 包含在基本類型上使用 static abstract 介面成員的一般數學 API,例如 Int32。 舊版的 C++/CLI 編譯器與這類成員不相容。 因為這些成員用於許多簡單型別,所以即使您沒有直接使用一般數學功能,在目標設定為 net7.0 時也會發生編譯錯誤。

除了 C++/CLI 之外,在簡單 System 型別上引進 static abstract 介面成員將會在與這個新語言建構的使用沒有往後相容性的其他工具中造成問題。 如果您是工具建立者,您必須更新此變更所影響的任何工具,以包容 static abstract 介面成員的使用。 如果您需要協助,請在 dotnet/runtime 存放庫中提交問題以要求指引。

先前的行為

先前,使用 C++/CLI 編譯 .NET 專案不會產生與基本 System 類型上的成員相關的錯誤。

新的行為

在 Visual Studio 17.2 版之前發行的版本中,使用 C++/CLI 編譯 net7.0 專案會導致許多類似此範例的錯誤:

error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function

除了升級之外,沒有其他方法可以解決這個編譯器錯誤。 這個錯誤的產生,是因為簡單 System 型別上的 static abstract 介面成員。 當您升級至 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

另請參閱