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

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

Zobacz też