OSPlatform-attribut har bytt namn eller tagits bort
Följande attribut som introducerades i .NET 5 Preview 8 har tagits bort eller bytt namn: MinimumOSPlatformAttribute
, RemovedInOSPlatformAttribute
och ObsoletedInOSPlatformAttribute
.
Ändra beskrivning
.NET 5 Preview 8 introducerade följande attribut i System.Runtime.Versioning namnområdet:
MinimumOSPlatformAttribute
RemovedInOSPlatformAttribute
ObsoletedInOSPlatformAttribute
När ett projekt i .NET 5 Preview 8 riktar sig mot en OS-specifik smak av .NET 5 med hjälp av en målramverksmoniker , net5.0-windows
till exempel , lägger bygget till ett attribut på sammansättningsnivå System.Runtime.Versioning.MinimumOSPlatformAttribute
.
I .NET 5 RC1 har den ObsoletedInOSPlatformAttribute
tagits bort och MinimumOSPlatformAttribute
RemovedInOSPlatformAttribute
bytt namn på följande sätt:
Namn på förhandsversion 8 | RC1 och senare namn |
---|---|
MinimumOSPlatformAttribute |
SupportedOSPlatformAttribute |
RemovedInOSPlatformAttribute |
UnsupportedOSPlatformAttribute |
I .NET 5 RC1 och senare, när ett projekt riktar in sig på en OS-specifik smak av .NET 5 med hjälp av ett målramverksmoniker som net5.0-windows
, lägger bygget till ett attribut på sammansättningsnivå SupportedOSPlatformAttribute .
Orsak till ändringen
.NET 5 Preview 8 introducerade attribut i System.Runtime.Versioning för att ange plattformar som stöds för API:er. Attributen används av Analysverktyg för plattformskompatibilitet för att skapa byggvarningar när plattformsspecifika API:er används på plattformar som inte stöder dessa API:er.
För .NET 5 RC1 lades ytterligare en funktion till i plattformskompatibilitetsanalysen för plattformsundantag. Funktionen gör att API:er kan markeras som helt ostödda på OS-plattformar. Den funktionen ledde till ändringar i attributen, inklusive användning av lämpligare namn. Togs ObsoletedInOSPlatformAttribute
bort eftersom den inte längre behövdes.
Version introducerad
5.0 RC1
Rekommenderad åtgärd
När du gör om projektet från .NET 5 Preview 8 till .NET 5 RC1 kan det uppstå bygg- eller körningsfel på grund av dessa ändringar. Till exempel kan namnbytet av MinimumOSPlatformAttribute
generera fel, eftersom attributet tillämpas på plattformsspecifika sammansättningar vid byggtiden, och gamla byggartefakter refererar fortfarande till det gamla API-namnet.
Exempel på build-time-fel:
- fel CS0246: Det gick inte att hitta typen eller namnområdesnamnet "MinimumOSPlatformAttribute" (saknar du ett användningsdirektiv eller en sammansättningsreferens?)
- fel CS0246: Det gick inte att hitta typ- eller namnområdesnamnet "RemovedInOSPlatformAttribute" (saknar du ett användningsdirektiv eller en sammansättningsreferens?)
- fel CS0246: Det gick inte att hitta typen eller namnområdets namn "ObsoletedInOSPlatformAttribute" (saknar du ett användningsdirektiv eller en sammansättningsreferens?)
Exempel på körningsfel:
Ohanterat undantag. System.TypeLoadException: Det gick inte att läsa in typen "System.Runtime.Versioning.MinimumOSPlatformAttribute" från sammansättningen "System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
Så här löser du följande fel:
- Uppdatera alla referenser
MinimumOSPlatformAttribute
till till SupportedOSPlatformAttribute. - Uppdatera alla referenser
RemovedInOSPlatformAttribute
till till UnsupportedOSPlatformAttribute. - Ta bort alla referenser till
ObsoletedInOSPlatformAttribute
. - Återskapa projektet (eller utför clean + build) för att ta bort gamla byggartefakter.
Berörda API:er
System.Runtime.Versioning.MinimumOSPlatformAttribute
System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
System.Runtime.Versioning.RemovedInOSPlatformAttribute