Dela via


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, RemovedInOSPlatformAttributeoch 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-windowstill 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

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