Projekty języka C++/interfejsu wiersza polecenia w programie Visual Studio
Platforma .NET 7 zawiera ogólne interfejsy API matematyczne , które używają static abstract
elementów członkowskich interfejsu w typach pierwotnych, takich jak Int32. Wcześniejsze wersje kompilatora C++/CLI były niezgodne z takimi elementami członkowskimi. Ponieważ te elementy członkowskie są używane w wielu typach pierwotnych, błędy kompilacji wystąpią podczas określania wartości docelowej net7.0
, nawet jeśli nie używasz ogólnych funkcji matematycznych bezpośrednio.
Poza językiem C++/CLI możliwe jest również, że wprowadzenie elementów członkowskich interfejsu static abstract
w typach pierwotnych System będzie zawierać problemy w innych narzędziach, które nie są zgodne z użyciem tej nowej konstrukcji języka. Jeśli jesteś autorem narzędzia, musisz zaktualizować wszystkie narzędzia, których dotyczy ta zmiana, aby uwzględnić użycie elementów członkowskich interfejsu static abstract
. Jeśli potrzebujesz pomocy, zgłoś problem w repozytorium dotnet/runtime, aby poprosić o wskazówki.
Poprzednie zachowanie
Wcześniej kompilowanie projektów platformy .NET przy użyciu języka C++/interfejsu wiersza polecenia nie powodowało błędów związanych z elementami członkowskimi w typach pierwotnych System .
Nowe zachowanie
Kompilowanie net7.0
projektu przy użyciu języka C++/CLI w wersji programu Visual Studio wcześniejszej niż wersja 17.2 spowoduje wiele błędów podobnych do tego przykładu:
error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function
Poza uaktualnianiem nie ma możliwości obejścia tego błędu kompilatora. Jest generowany z powodu elementów członkowskich interfejsu static abstract
dla typów pierwotnych System . Po uaktualnieniu do programu Visual Studio 2022 w wersji 17.2 błędy kompilacji nie będą już występować.
Niejawnie zaimplementowane static abstract
elementy członkowskie interfejsu można wywołać, ale nawet w programie Visual Studio 2022 w wersji 17.2 język C++/cli nie obsługuje wywoływania jawnie zaimplementowanych static abstract
elementów członkowskich interfejsu.
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła.
Przyczyna wprowadzenia zmiany
Platforma .NET 7 zawiera nowe definicje interfejsu API dla ogólnego zestawu funkcji matematycznych . Te interfejsy API zostały wprowadzone na platformie .NET 6 jako funkcja w wersji zapoznawczej i wymagały zainstalowania pakietu w System.Runtime.Experimental
celu uzyskania dostępu. Począwszy od platformy .NET 7, te ogólne interfejsy API matematyczne są dołączane "w polu".
Zalecana akcja
Aby kontynuować korzystanie z języka C++/CLI na platformie .NET 7, przeprowadź uaktualnienie do programu Visual Studio 2022 w wersji 17.2 lub nowszej. Może być również konieczne ustawienie zestawu narzędzi platformy na 143.
Jeśli po uaktualnieniu do platformy .NET 8 pominięto program .NET 7, przeprowadź uaktualnienie do programu Visual Studio 2022 w wersji 17.8 lub nowszej oraz zestawu narzędzi platformy w wersji 143 lub nowszej.
Dotyczy interfejsów API
Nie dotyczy