Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 niekompatybilne z takimi członkami. 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 może powodować problemy w innych narzędziach, które nie są zgodne z przy użyciu 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++/CLI nie powodowało błędów związanych z członkami typów 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 przez członków interfejsu static abstract
dla typów prymitywnych 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.
Wersja wprowadzona
.NET 7
Typ zmiany przełamującej
Ta zmiana może mieć wpływ na zgodność źródła .
Przyczyna zmiany
Platforma .NET 7 zawiera nowe definicje interfejsu API dla ogólnego zestawu funkcji matematycznych . Te interfejsy API były wprowadzone na platformie .NET 6 jako funkcja w wersji zapoznawczej i wymagały zainstalowania pakietu System.Runtime.Experimental
w 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.
Interfejsy API, których dotyczy problem
N/A