Udostępnij za pośrednictwem


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 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".

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

Zobacz także