Funzionalità obsolete in .NET 5+
A partire da .NET 5, alcune API appena contrassegnate come obsolete usano due nuove proprietà in ObsoleteAttribute.
La proprietà ObsoleteAttribute.DiagnosticId indica al compilatore di generare avvisi di compilazione usando un ID di diagnostica personalizzato. L'ID personalizzato consente di eliminare l'avviso di obsolescenza in modo specifico e separatamente l'uno dall'altro. Nel caso delle versioni obsolete di .NET 5+, il formato per l'ID di diagnostica personalizzato è
SYSLIB0XXX
.La proprietà ObsoleteAttribute.UrlFormat indica al compilatore di includere un collegamento URL per altre informazioni sull'obsolescenza.
Se si riscontrano avvisi o errori di compilazione a causa dell'uso di un'API obsoleta, seguire le indicazioni specifiche fornite per l'ID di diagnostica elencato nella sezione Riferimento. Non è possibile eliminare avvisi o errori per questi elementi obsoleti usando l'ID di diagnostica standard (CS0618) per i tipi o i membri obsoleti. Usare invece il valore ID di diagnostica SYSLIB0XXX
personalizzato. Per altre informazioni, vedere Eliminare gli avvisi.
Riferimento
Nella tabella seguente viene fornito un indice per gli elementi obsoleti SYSLIB0XXX
in .NET 5+.
ID di diagnostica | Avviso o errore | Descrizione |
---|---|---|
SYSLIB0001 | Avviso | La codifica UTF-7 non è sicura e non deve essere usata. In alternativa, considerare l'utilizzo di UTF-8. |
SYSLIB0002 | Error | PrincipalPermissionAttribute non viene rispettato dal runtime e non deve essere usato. |
SYSLIB0003 | Avviso | La sicurezza dall'accesso di codice (CAS) non è supportata o rispettata dal runtime. |
SYSLIB0004 | Avviso | La funzionalità area di esecuzione vincolata (CER) non è supportata. |
SYSLIB0005 | Avviso | La Global Assembly Cache (GAC) non è supportata. |
SYSLIB0006 | Avviso | Thread.Abort() non è supportato e genera PlatformNotSupportedException. |
SYSLIB0007 | Avviso | L'implementazione predefinita di questo algoritmo di crittografia non è supportata. |
SYSLIB0008 | Avviso | L'API CreatePdbGenerator() non è supportata e genera PlatformNotSupportedException. |
SYSLIB0009 | Avviso | AuthenticationManager non è supportata. I metodi non eseguiranno operazioni o genereranno PlatformNotSupportedException. |
SYSLIB0010 | Avviso | Alcune API di comunicazione remota non sono supportate e generano PlatformNotSupportedException. |
SYSLIB0011 | Avviso | La serializzazione BinaryFormatter è obsoleta e non deve essere usata. |
SYSLIB0012 | Avviso | Assembly.CodeBase e Assembly.EscapedCodeBase sono inclusi solo per la compatibilità di .NET Framework. Utilizzare invece Assembly.Location. |
SYSLIB0013 | Avviso | Uri.EscapeUriString(String) può danneggiare la stringa URI in alcuni casi. È consigliabile usare invece Uri.EscapeDataString(String) per i componenti della stringa di query. |
SYSLIB0014 | Avviso | WebRequest, HttpWebRequest, ServicePoint e WebClient sono obsoleti. Utilizzare invece HttpClient. |
SYSLIB0015 | Avviso | DisablePrivateReflectionAttribute non ha alcun effetto in .NET 6+. |
SYSLIB0016 | Avviso | Usare gli overload Graphics.GetContextInfo che accettano argomenti per prestazioni migliori e un minor numero di allocazioni. |
SYSLIB0017 | Avviso | La firma con nome sicuro non è supportata e genera PlatformNotSupportedException. |
SYSLIB0018 | Avviso | Il caricamento con solo reflection non è supportato e genera PlatformNotSupportedException. |
SYSLIB0019 | Avviso | I membri di System.Runtime.InteropServices.RuntimeEnvironment SystemConfigurationFile, GetRuntimeInterfaceAsIntPtr(Guid, Guid) e GetRuntimeInterfaceAsObject(Guid, Guid) non sono più supportati e generano PlatformNotSupportedException. |
SYSLIB0020 | Avviso | JsonSerializerOptions.IgnoreNullValues è obsoleto. Per ignorare i valori Null durante la serializzazione, impostare DefaultIgnoreCondition su JsonIgnoreCondition.WhenWritingNull. |
SYSLIB0021 | Avviso | I tipi crittografici derivati sono obsoleti. Usare invece il metodo Create sul tipo di base. |
SYSLIB0022 | Avviso | I tipi Rijndael e RijndaelManaged sono obsoleti. Utilizzare invece Aes. |
SYSLIB0023 | Avviso | RNGCryptoServiceProvider è obsoleto. Per generare un numero casuale, usare invece uno dei metodi statici RandomNumberGenerator. |
SYSLIB0024 | Avviso | La creazione e lo scaricamento di AppDomains non sono supportati e generano un'eccezione. |
SYSLIB0025 | Avviso | SuppressIldasmAttribute non ha alcun effetto in .NET 6+. |
SYSLIB0026 | Avviso | X509Certificate e X509Certificate2 non sono modificabili. Usare il costruttore appropriato per creare un nuovo certificato. |
SYSLIB0027 | Avviso | PublicKey.Key è obsoleto. Usare il metodo appropriato per ottenere la chiave pubblica, ad esempio GetRSAPublicKey(). |
SYSLIB0028 | Avviso | X509Certificate2.PrivateKey è obsoleto. Usare il metodo appropriato per ottenere la chiave privata, ad esempio RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2), o usare il metodo X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) per creare una nuova istanza con una chiave privata. |
SYSLIB0029 | Avviso | ProduceLegacyHmacValues è obsoleto. La produzione di valori HMAC legacy non è più supportata. |
SYSLIB0030 | Avviso | HMACSHA1 usa sempre l'implementazione dell'algoritmo fornita dalla piattaforma. Usare un costruttore senza il parametro useManagedSha1 . |
SYSLIB0031 | Avviso | CryptoConfig.EncodeOID(String) è obsoleto. Usare la funzionalità ASN.1 fornita in System.Formats.Asn1. |
SYSLIB0032 | Avviso | Il ripristino da eccezioni di stato del processo danneggiato non è supportato. HandleProcessCorruptedStateExceptionsAttribute viene ignorato. |
SYSLIB0033 | Avviso | Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) è obsoleto e non è supportato. Utilizzare invece PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]). |
SYSLIB0034 | Avviso | CmsSigner(CspParameters) è obsoleto. Usare invece un costruttore alternativo. |
SYSLIB0035 | Avviso | SignerInfo.ComputeCounterSignature() è obsoleto. Utilizzare invece l'overload che accetta CmsSigner. |
SYSLIB0036 | Avviso | Regex.CompileToAssembly è obsoleto e non è supportato. Usare invece RegexGeneratorAttribute con il generatore di origini delle espressioni regolari. |
SYSLIB0037 | Avviso | I membri di AssemblyName HashAlgorithm, ProcessorArchitecture e VersionCompatibility sono obsoleti e non supportati. |
SYSLIB0038 | Avviso | SerializationFormat.Binary è obsoleto e non deve essere usato. |
SYSLIB0039 | Avviso | Le versioni 1.0 e 1.1 di TLS presentano vulnerabilità note e non sono consigliate. Usare invece una versione TLS più recente o usare SslProtocols.None per rinviare alle impostazioni predefinite del sistema operativo. |
SYSLIB0040 | Avviso | EncryptionPolicy.NoEncryption e EncryptionPolicy.AllowNoEncryption riducono significativamente la sicurezza e non devono essere usati nel codice di produzione. |
SYSLIB0041 | Avviso | L'algoritmo hash predefinito e i conteggi delle iterazioni nei costruttori Rfc2898DeriveBytes sono obsoleti e non sicuri. Usare un costruttore che accetta l'algoritmo hash e il numero di iterazioni. |
SYSLIB0042 | Avviso | ToXmlString e FromXmlString non hanno implementazione per i tipi ECC (Elliptic Curve Cryptography) e sono obsoleti. Usare un formato di importazione ed esportazione standard, ad esempio ExportSubjectPublicKeyInfo o ImportSubjectPublicKeyInfo per le chiavi pubbliche e ExportPkcs8PrivateKey o ImportPkcs8PrivateKey per le chiavi private. |
SYSLIB0043 | Avviso | ECDiffieHellmanPublicKey.ToByteArray() e il costruttore associato non hanno un'implementazione coerente e interoperabile in tutte le piattaforme. Utilizzare invece ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo(). |
SYSLIB0044 | Avviso | AssemblyName.CodeBase e AssemblyName.EscapedCodeBase sono obsoleti. L'uso di tali assembly per il caricamento di un assembly non è supportato. |
SYSLIB0045 | Avviso | I metodi factory crittografici che accettano un nome di algoritmo sono obsoleti. Usare invece il metodo factory Create senza parametri nel tipo di algoritmo. |
SYSLIB0046 | Avviso | Il metodo ControlledExecution.Run(Action, CancellationToken) potrebbe danneggiare il processo e non deve essere usato nel codice di produzione. |
SYSLIB0047 | Avviso | XmlSecureResolver è obsoleto. Usare invece XmlResolver.ThrowingResolver quando si tenta di impedire la risoluzione di entità esterne XML. |
SYSLIB0048 | Avviso | RSA.EncryptValue(Byte[]) e RSA.DecryptValue(Byte[]) sono obsoleti. In alternativa, usare RSA.Encrypt e RSA.Decrypt. |
SYSLIB0049 | Avviso | JsonSerializerOptions.AddContext è obsoleto. Per registrare un jsonSerializerContext, usare la proprietà TypeInfoResolver o TypeInfoResolverChain. |
SYSLIB0050 | Avviso | La serializzazione basata su formattatore è obsoleta e non deve essere usata. |
SYSLIB0051 | Avviso | Le API che supportano la serializzazione obsoleta basata su formattatore sono obsolete. Non devono essere chiamate o estese dal codice dell'applicazione. |
SYSLIB0052 | Avviso | Le API che supportano meccanismi obsoleti per l'estendibilità Regex sono obsolete. |
SYSLIB0053 | Avviso | AesGcm deve indicare le dimensioni del tag necessarie per la crittografia e la decrittografia. Utilizzare un costruttore che accetta le dimensioni del tag. |
SYSLIB0054 | Avviso | Thread.VolatileRead e Thread.VolatileWrite sono obsoleti. In sostituzione utilizzare Volatile.Read o Volatile.Write. |
SYSLIB0055 | Avviso | AdvSimd.ShiftRightLogicalRoundedNarrowingSaturate* metodi con parametri firmati sono obsoleti. Usa invece gli overload non firmati. |
SYSLIB0056 | Avviso | Assembly.LoadFrom con un AssemblyHashAlgorithm personalizzato è obsoleto. Usare gli overload senza un AssemblyHashAlgorithm . |
SYSLIB0057 | Avviso | I costruttori X509Certificate2 e X509Certificate per il contenuto binario e del file sono obsoleti. |
Non visualizzare gli avvisi
È consigliabile usare una soluzione alternativa disponibile, quando possibile. Tuttavia, se non è possibile modificare il codice, è possibile eliminare gli avvisi tramite una direttiva #pragma
o un'impostazione di progetto <NoWarn>
. Se è necessario usare le API obsolete e la diagnostica SYSLIB0XXX
non riscontra un errore, è possibile eliminare l'avviso nel codice o nel file di progetto.
Per eliminare gli avvisi nel codice:
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
Per eliminare gli avvisi in un file di progetto:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB0001 project-wide -->
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
<!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
<NoWarn>$(NoWarn);SYSLIB0002</NoWarn>
<NoWarn>$(NoWarn);SYSLIB0003</NoWarn>
<!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
<NoWarn>$(NoWarn);SYSLIB0001;SYSLIB0002;SYSLIB0003</NoWarn>
</PropertyGroup>
</Project>
Nota
L'eliminazione degli avvisi in questo modo disabilita solo gli avvisi di obsolescenza specificati. Non disabilita altri avvisi, inclusi quelli obsoleti con ID di diagnostica diversi.