Attributi OSPlatform rinominati o rimossi
Gli attributi seguenti introdotti in .NET 5 Preview 8 sono stati rimossi o rinominati: MinimumOSPlatformAttribute
, RemovedInOSPlatformAttribute
e ObsoletedInOSPlatformAttribute
.
Descrizione delle modifiche
In .NET 5 Preview 8 sono stati introdotti 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 di .NET 5 specifica del sistema operativo usando un moniker framework di destinazione, ad esempio net5.0-windows
, la compilazione aggiunge un attributo System.Runtime.Versioning.MinimumOSPlatformAttribute
a livello di assembly.
In .NET 5 RC1 l'attributo ObsoletedInOSPlatformAttribute
è stato rimosso e MinimumOSPlatformAttribute
e RemovedInOSPlatformAttribute
sono stati rinominati come segue:
Nome in Preview 8 | Nome in RC1 e successive |
---|---|
MinimumOSPlatformAttribute |
SupportedOSPlatformAttribute |
RemovedInOSPlatformAttribute |
UnsupportedOSPlatformAttribute |
In .NET 5 RC1 e versioni successive, quando un progetto viene destinato a una versione di .NET 5 specifica del sistema operativo mediante un moniker framework di destinazione, ad esempio net5.0-windows
, la compilazione aggiunge un attributo SupportedOSPlatformAttribute a livello di assembly.
Motivo della modifica
In .NET 5 Preview 8 sono stati introdotti 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 le supportano.
In .NET 5 RC1, all'analizzatore di compatibilità della piattaforma è stata aggiunta un'ulteriore funzionalità per l'esclusione di piattaforme. La funzionalità consente di contrassegnare le API come completamente non supportate in determinate piattaforme del sistema operativo. Tale funzionalità ha sollecitato l'introduzione di modifiche agli attributi, incluso l'uso di nomi più idonei. L'attributo ObsoletedInOSPlatformAttribute
è stato rimosso perché non era più necessario.
Versione introdotta
5.0 RC1
Azione consigliata
Quando si ridestina un progetto da .NET 5 Preview 8 a .NET 5 RC1, possono verificarsi errori di compilazione o di runtime causati da queste modifiche. Ad esempio, è probabile che la ridenominazione di MinimumOSPlatformAttribute
generi errori, perché l'attributo viene applicato agli assembly specifici della piattaforma in fase di compilazione e i vecchi artefatti di compilazione faranno comunque riferimento al nome dell'API precedente.
Esempi di errori in fase di compilazione:
- errore CS0246: Il nome di tipo o di spazio dei nomi 'MinimumOSPlatformAttribute' non è stato trovato. Probabilmente manca una direttiva using o un riferimento all'assembly.
- errore CS0246: Il nome di tipo o di spazio dei nomi 'RemovedInOSPlatformAttribute' non è stato trovato. Probabilmente manca una direttiva using o un riferimento all'assembly.
- errore CS0246: Il nome di tipo o di spazio dei nomi 'ObsoletedInOSPlatformAttribute' non è stato trovato. Probabilmente manca una direttiva using o un riferimento all'assembly.
Esempio di errore di run-time:
Eccezione non gestita. System.TypeLoadException:Non è stato possibile 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 un'operazione di pulizia e compilazione) per eliminare i vecchi artefatti di compilazione.
API interessate
System.Runtime.Versioning.MinimumOSPlatformAttribute
System.Runtime.Versioning.ObsoletedInOSPlatformAttribute
System.Runtime.Versioning.RemovedInOSPlatformAttribute