Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET 7 bevat algemene wiskundige API's die interfaceleden gebruiken static abstract voor primitieve typen, zoals Int32. Eerdere versies van de C++/CLI-compiler waren niet compatibel met dergelijke leden. Omdat deze leden worden gebruikt voor veel primitieve typen, treden er compilatiefouten op bij het compileren van net7.0, zelfs als u de generieke wiskundige functies niet rechtstreeks gebruikt.
Naast C++/CLI is het ook mogelijk dat de introductie van static abstract interfaceleden op primitieve System typen problemen veroorzaakt in andere hulpprogramma's die niet compatibel zijn met het gebruik van deze nieuwe taalconstructie. Als u een auteur van het hulpprogramma bent, moet u alle hulpprogramma's die worden beïnvloed door deze wijziging bijwerken om het gebruik van static abstract interfaceleden mogelijk te maken. Als u hulp nodig hebt, kunt u een probleem indienen in de dotnet/runtime-opslagplaats om hulp aan te vragen.
Vorig gedrag
Voorheen leverde het compileren van .NET-projecten met C++/CLI geen fouten op met betrekking tot leden op primitieve System typen.
Nieuw gedrag
Het compileren van een net7.0 project met C++/CLI in een release van Visual Studio vóór versie 17.2 leidt tot veel fouten die vergelijkbaar zijn met dit voorbeeld:
error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function
Behalve bijwerken is er geen manier om deze compilerfout te omzeilen. Het wordt gegenereerd vanwege static abstract interfaceleden op primitieve System typen. Wanneer u een upgrade uitvoert naar Visual Studio 2022 versie 17.2, treden de compilatiefouten niet meer op.
Impliciet geïmplementeerde static abstract interfaceleden kunnen worden aangeroepen, maar zelfs met Visual Studio 2022 versie 17.2 biedt C++/CLI geen ondersteuning voor het aanroepen van expliciet geïmplementeerde static abstract interfaceleden.
Geïntroduceerde versie
.NET 7
Type van brekende verandering
Deze wijziging kan invloed hebben op broncompatibiliteit.
Reden voor wijziging
.NET 7 bevat de nieuwe API-definities voor de algemene wiskundige functieset. Deze API's zijn geïntroduceerd in .NET 6 als preview-functie en vereist dat u het System.Runtime.Experimental pakket installeert om toegang te krijgen. Vanaf .NET 7 zijn deze algemene wiskundige API's opgenomen in box.
Aanbevolen actie
Als u C++/CLI wilt blijven gebruiken met .NET 7, voert u een upgrade uit naar Visual Studio 2022 versie 17.2 of een nieuwere versie. Mogelijk moet u de platformhulpprogrammaset ook instellen op v143.
Als u .NET 7 hebt overgeslagen toen u een upgrade hebt uitgevoerd naar .NET 8, voert u een upgrade uit naar Visual Studio 2022 versie 17.8 of hoger en platformhulpprogramma'set v143 of hoger.
Betreffende API's
Niet van toepassing.