Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET 7 innehåller allmänna matematiska API:er som använder static abstract gränssnittsmedlemmar för primitiva typer, till exempel Int32. Tidigare versioner av C++/CLI-kompilatorn var inte kompatibla med sådana medlemmar. Eftersom dessa medlemmar används på många primitiva typer uppstår kompileringsfel när du riktar in dig på net7.0, även om du inte använder de allmänna matematiska funktionerna direkt.
Utöver C++/CLI är det också möjligt att introduktionen av static abstract gränssnittsmedlemmar på primitiva System typer kommer att visa problem i andra verktyg som inte är framåtkompatibla med användningen av den nya språkkonstruktionen. Om du är verktygsförfattare måste du uppdatera alla verktyg som påverkas av den här ändringen för att hantera användningen av gränssnittsmedlemmar static abstract . Om du behöver hjälp kan du ange ett problem på lagringsplatsen dotnet/runtime för att begära vägledning.
Tidigare beteende
Tidigare ledde kompilering av .NET-projekt med C++/CLI inte till fel relaterade till medlemmar på primitiva System typer.
Nytt beteende
Kompilering av ett net7.0 projekt med C++/CLI i en version av Visual Studio före version 17.2 resulterar i många fel som liknar det här exemplet:
error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function
Förutom att uppgradera finns det inget sätt att kringgå det här kompilatorfelet. Det genereras på grund av static abstract gränssnittsmedlemmar på primitiva System typer. När du uppgraderar till Visual Studio 2022 version 17.2 uppstår inte längre kompileringsfelen.
Implicit implementerade static abstract gränssnittsmedlemmar kan anropas, men även med Visual Studio 2022 version 17.2 stöder C++/CLI inte att anropa explicit implementerade gränssnittsmedlemmar static abstract .
Version lanserad
.NET 7
Typ av brytande ändring
Den här ändringen kan påverka källkompatibilitet.
Orsak till ändring
.NET 7 innehåller de nya API-definitionerna för den allmänna matematiska funktionsuppsättningen. Dessa API:er introducerades i .NET 6 som en förhandsversionsfunktion och krävde att du installerade System.Runtime.Experimental paketet för att få åtkomst. Från och med .NET 7 ingår dessa allmänna matematiska API:er i rutan.
Rekommenderad åtgärd
Om du vill fortsätta använda C++/CLI med .NET 7 uppgraderar du till Visual Studio 2022 version 17.2 eller senare. Du kan också behöva ställa in plattformverktygsuppsättningen till v143.
Om du hoppade över .NET 7 när du uppgraderade till .NET 8 uppgraderar du till Visual Studio 2022 version 17.8 eller senare och plattformsverktyg v143 eller senare.
Berörda API:er
Inte tillgänglig