Condividi tramite


Attributi OSPlatform rinominati o rimossi

Gli attributi seguenti introdotti in .NET 5 Preview 8 sono stati rimossi o rinominati: MinimumOSPlatformAttribute, RemovedInOSPlatformAttributee ObsoletedInOSPlatformAttribute.

Descrizione delle modifiche

.NET 5 Preview 8 ha introdotto gli attributi seguenti nello spazio dei nomi System.Runtime.Versioning:

  • MinimumOSPlatformAttribute
  • RemovedInOSPlatformAttribute
  • ObsoletedInOSPlatformAttribute

In .NET 5 Preview 8, quando un progetto è destinato a una versione specifica per sistema operativo di .NET 5 usando un moniker del framework di destinazione, la compilazione aggiunge un attributo a livello net5.0-windows di assembly.

In .NET 5 RC1, ObsoletedInOSPlatformAttribute è stato rimosso e MinimumOSPlatformAttribute e RemovedInOSPlatformAttribute sono stati rinominati come segue:

Anteprima nome 8 RC1 e nome successivo
MinimumOSPlatformAttribute SupportedOSPlatformAttribute
RemovedInOSPlatformAttribute UnsupportedOSPlatformAttribute

In .NET 5 RC1 e versioni successive, quando un progetto ha come destinazione una versione specifica per sistema operativo di .NET 5 usando un moniker del framework di destinazione, ad net5.0-windows, la compilazione aggiunge un attributo a livello di SupportedOSPlatformAttribute assembly.

Motivo della modifica

.NET 5 Preview 8 ha introdotto gli attributi in System.Runtime.Versioning per specificare le piattaforme supportate per le API. Gli attributi vengono utilizzati dall'analizzatore di compatibilità della piattaforma per generare avvisi di compilazione quando le API specifiche della piattaforma vengono utilizzate su piattaforme che non supportano tali API.

Per .NET 5 RC1 è stata aggiunta un'ulteriore funzionalità all'analizzatore della compatibilità della piattaforma per l'esclusione della piattaforma. La funzionalità consente di contrassegnare le API come completamente non supportate nelle piattaforme del sistema operativo. Tale funzionalità ha richiesto modifiche agli attributi, incluso l'uso di nomi più adatti. L'oggetto ObsoletedInOSPlatformAttribute è stato rimosso perché non era più necessario.

Versione introdotta

5.0 RC1

Quando si ridestina il progetto da .NET 5 Preview 8 a .NET 5 RC1, è possibile che si verifichino errori di compilazione o runtime a causa di queste modifiche. Ad esempio, è probabile che la ridenominazione di MinimumOSPlatformAttribute generi degli errori, perché l'attributo viene applicato agli assembly specifici della piattaforma in fase di compilazione e gli artefatti di compilazione precedenti faranno ancora riferimento al vecchio nome dell'API.

Esempi di errori in fase di compilazione:

  • errore CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'MinimumOSPlatformAttribute' (forse manca una direttiva using o un riferimento all'assembly?)
  • errore CS0246: Impossibile trovare il tipo o il nome dello spazio dei nomi 'RemovedInOSPlatformAttribute' (potrebbe mancare una direttiva 'using' o un riferimento all'assembly?)
  • errore CS0246: Il tipo o il nome del namespace 'ObsoletedInOSPlatformAttribute' non può essere trovato (manca una direttiva using o un riferimento all'assembly?)

Esempio di errore di runtime:

Eccezione non gestita. System.TypeLoadException: impossibile caricare il tipo 'System.Runtime.Versioning.MinimumOSPlatformAttribute' dall'assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Per risolvere questi errori:

  • Aggiornare tutti i riferimenti di MinimumOSPlatformAttribute a SupportedOSPlatformAttribute.
  • Aggiornare tutti i riferimenti di RemovedInOSPlatformAttribute a UnsupportedOSPlatformAttribute.
  • Rimuovere tutti i riferimenti a ObsoletedInOSPlatformAttribute.
  • Ricompilare il progetto (o eseguire clean + build) per eliminare gli artefatti di compilazione precedenti.

Le API interessate

  • System.Runtime.Versioning.MinimumOSPlatformAttribute
  • System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
  • System.Runtime.Versioning.RemovedInOSPlatformAttribute