Condividi tramite


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.

Vedi anche