.NET 5 以降の古い機能

.NET 5 以降、新たに、古いものとしてマークされた一部の API によって、ObsoleteAttribute の 2 つの新しいプロパティが使用されます。

  • ObsoleteAttribute.DiagnosticId プロパティは、カスタム診断 ID を使用してビルド警告を生成するようにコンパイラに指示します。 カスタム ID を使用すると、旧型式であるという警告を明確に個別に分けて非表示にすることができます。 .NET 5 以降の旧型式の場合、カスタム診断 ID の形式は SYSLIB0XXX です。

  • ObsoleteAttribute.UrlFormat プロパティは、旧型式の詳細について確認するために URL リンクを含めるようにコンパイラに指示します。

古い API の使用によってビルドの警告またはエラーが発生した場合は、「リファレンス」セクションに記載されている診断 ID に関する具体的なガイダンスに従ってください。 これらの古い警告またはエラーは、古い型またはメンバーに対して標準診断 ID (CS0618) を使用して非表示にすることは "できません"。代わりに、カスタム SYSLIB0XXX 診断 ID の値を使用してください。 詳細については、「警告を表示しない」を参照してください。

リファレンス

次の表は、.NET 5 以降の SYSLIB0XXX 旧型式のインデックスを示しています。

診断 ID 警告またはエラー 説明
SYSLIB0001 警告 UTF-7 エンコードは安全ではないため、使用しないでください。 代わりに UTF-8 を使用することを検討してください。
SYSLIB0002 エラー PrincipalPermissionAttribute はランタイムによって受け入れられず、使用することはできません。
SYSLIB0003 警告 コード アクセス セキュリティ (CAS) はサポートされていないか、ランタイムによって受け入れられていません。
SYSLIB0004 警告 制約された実行領域 (CER) 機能はサポートされていません。
SYSLIB0005 警告 グローバル アセンブリ キャッシュ (GAC) はサポートされていません。
SYSLIB0006 警告 Thread.Abort() はサポートされていません。PlatformNotSupportedException がスローされます。
SYSLIB0007 警告 この暗号化アルゴリズムの既定の実装はサポートされていません。
SYSLIB0008 警告 CreatePdbGenerator() API はサポートされていません。PlatformNotSupportedException がスローされます。
SYSLIB0009 警告 AuthenticationManager はサポートされません。 メソッドは操作なしか、PlatformNotSupportedException をスローします。
SYSLIB0010 警告 一部のリモート処理 API はサポートされていません。PlatformNotSupportedException がスローされます。
SYSLIB0011 警告 BinaryFormatter シリアル化は古いので使用しないでください。
SYSLIB0012 警告 Assembly.CodeBaseAssembly.EscapedCodeBase は .NET Framework との互換性のためだけに含まれています。 Assembly.Location を代わりに使用します。
SYSLIB0013 警告 Uri.EscapeUriString(String) を使用すると、場合によっては、URI 文字列が壊れる可能性があります。 クエリ文字列コンポーネントには、代わりに Uri.EscapeDataString(String) の使用を検討してください。
SYSLIB0014 警告 WebRequestHttpWebRequestServicePointWebClient は古くなっています。 HttpClient を代わりに使用します。
SYSLIB0015 警告 .NET 6 以降では、DisablePrivateReflectionAttribute の効果はありません。
SYSLIB0016 警告 パフォーマンスを向上させて、割り当てを減らすため、引数を受け取る Graphics.GetContextInfo のオーバーロードを使用してください。
SYSLIB0017 警告 厳密な名前の署名がサポートされず、PlatformNotSupportedException がスローされます。
SYSLIB0018 警告 リフレクションのみの読み込みがサポートされず、PlatformNotSupportedException がスローされます。
SYSLIB0019 警告 System.Runtime.InteropServices.RuntimeEnvironment のメンバー SystemConfigurationFileGetRuntimeInterfaceAsIntPtr(Guid, Guid)GetRuntimeInterfaceAsObject(Guid, Guid) はサポートされなくなっており、PlatformNotSupportedException がスローされます。
SYSLIB0020 警告 JsonSerializerOptions.IgnoreNullValues は互換性のために残されています。 シリアル化のときに null 値を無視するには、DefaultIgnoreConditionJsonIgnoreCondition.WhenWritingNull に設定します。
SYSLIB0021 警告 派生された暗号化の種類は古い形式です。 代わりに、基本データ型で Create メソッドを使用してください。
SYSLIB0022 警告 Rijndael 型と RijndaelManaged 型は古い形式です。 Aes を代わりに使用します。
SYSLIB0023 警告 RNGCryptoServiceProvider は互換性のために残されています。 乱数を生成するには、代わりに RandomNumberGenerator 静的メソッドのいずれかを使用します。
SYSLIB0024 警告 AppDomain の作成とアンロードはサポートされておらず、例外がスローされます。
SYSLIB0025 警告 .NET 6 以降では、SuppressIldasmAttribute の効果はありません。
SYSLIB0026 警告 X509CertificateX509Certificate2 は変更できません。 適切なコンストラクターを使用して、新しい証明書を作成してください。
SYSLIB0027 警告 PublicKey.Key は互換性のために残されています。 適切なメソッドを使用して、GetRSAPublicKey() などの公開キーを取得します。
SYSLIB0028 警告 X509Certificate2.PrivateKey は互換性のために残されています。 適切なメソッドを使用して、RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2) などの秘密キーを取得するか、X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) メソッドを使用して秘密キーで新しいインスタンスを作成します。
SYSLIB0029 警告 ProduceLegacyHmacValues は互換性のために残されています。 従来の HMAC 値の生成はサポートされなくなりました。
SYSLIB0030 警告 HMACSHA1 では、プラットフォームによって提供されるアルゴリズムの実装が常に使用されます useManagedSha1 パラメーターを指定しないでコンストラクターを使用します。
SYSLIB0031 警告 CryptoConfig.EncodeOID(String) は互換性のために残されています。 System.Formats.Asn1 で提供されている ASN.1 の機能を使用します。
SYSLIB0032 警告 破損したプロセス状態の例外からの回復はサポートされていません。HandleProcessCorruptedStateExceptionsAttribute は無視されます。
SYSLIB0033 警告 Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) は互換性のために残されており、サポートされていません。 PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) を代わりに使用します。
SYSLIB0034 警告 CmsSigner(CspParameters) は互換性のために残されています。 代わりに、別のコンストラクターを使用します。
SYSLIB0035 警告 SignerInfo.ComputeCounterSignature() は互換性のために残されています。 代わりに、CmsSigner を許可するオーバーロードを使用します。
SYSLIB0036 警告 Regex.CompileToAssembly は互換性のために残されており、サポートされていません。 代わりに、正規表現のソースジェネレーターと共に RegexGeneratorAttribute を使用してください。
SYSLIB0037 警告 AssemblyName メンバー HashAlgorithmProcessorArchitectureVersionCompatibility は互換性のために残されており、サポートされていません。
SYSLIB0038 警告 SerializationFormat.Binary は互換性のために残されていますが、使用しないでください。
SYSLIB0039 警告 TLS バージョン 1.0 と 1.1 には既知の脆弱性があり、推奨されていません。 代わりに新しいバージョンの TLS を使用するか、SslProtocols.None を使用して OS の既定値に従います。
SYSLIB0040 警告 EncryptionPolicy.NoEncryptionEncryptionPolicy.AllowNoEncryption はセキュリティを大幅に低下させるため、運用環境のコードでは使用しないでください。
SYSLIB0041 警告 Rfc2898DeriveBytes コンストラクターの既定のハッシュ アルゴリズムと反復回数は古く、安全ではありません。 ハッシュ アルゴリズムと反復回数を受け入れるコンストラクターを使用します。
SYSLIB0042 警告 ToXmlString および FromXmlString には楕円曲線暗号 (ECC) 型の実装はなく、廃止されています。 公開キー用のExportSubjectPublicKeyInfoImportSubjectPublicKeyInfo、秘密キー用の ExportPkcs8PrivateKeyImportPkcs8PrivateKey などの標準のインポートおよびエクスポート形式を使用します。
SYSLIB0043 警告 ECDiffieHellmanPublicKey.ToByteArray() および関連付けられたコンストラクターには、すべてのプラットフォームで一貫した相互運用可能な実装がありません。 ECDiffieHellmanPublicKey.ExportSubjectPublicKeyInfo() を代わりに使用します。
SYSLIB0044 警告 AssemblyName.CodeBaseAssemblyName.EscapedCodeBase は非推奨になっています。 アセンブリの読み込みに使用することはサポートされていません。
SYSLIB0045 警告 アルゴリズム名を受け入れる暗号化ファクトリ メソッドは廃止されました。 代わりに、アルゴリズムの種類に対してパラメーターなしの Create ファクトリ メソッドを使用します。
SYSLIB0046 警告 ControlledExecution.Run(Action, CancellationToken) メソッドはプロセスを破損させる可能性があり、運用コードでは使用しないでください。
SYSLIB0047 警告 XmlSecureResolver は互換性のために残されています。 XML 外部エンティティ解決を禁止する場合は、代わりに XmlResolver.ThrowingResolver を使用します。
SYSLIB0048 警告 RSA.EncryptValue(Byte[])RSA.DecryptValue(Byte[]) は非推奨になっています。 代わりに、RSA.Encrypt および RSA.Decrypt を使用してください。
SYSLIB0049 警告 JsonSerializerOptions.AddContext は廃止されています。 JsonSerializerContext を登録するには、TypeInfoResolver または TypeInfoResolverChain プロパティを使用してください。
SYSLIB0050 警告 フォーマッタ ベースのシリアル化は古いので使用しないでください。
SYSLIB0051 警告 古いフォーマッタ ベースのシリアル化をサポートする API は古くなっています。 アプリケーション コードで呼び出したり拡張したりすることはできません。
SYSLIB0052 警告 Regex 拡張機能の古いメカニズムをサポートする API は廃止されています。
SYSLIB0053 警告 AesGcm では、暗号化と暗号化解除に必要なタグ サイズが示されている必要があります。 タグ サイズを受け入れるコンストラクターを使用してください。

警告を表示しない

可能な限り、使用可能な回避策を使用してください。 ただし、コードを変更できない場合、#pragma ディレクティブか <NoWarn> プロジェクト設定で警告を非表示にできます。 古い API を使用する必要があり、SYSLIB0XXX 診断がエラーとして表示されない場合は、コードまたはプロジェクト ファイルで警告を非表示にすることができます。

コードで警告を抑制するには:

// Disable the warning.
#pragma warning disable SYSLIB0001

// Code that uses obsolete API.
//...

// Re-enable the warning.
#pragma warning restore SYSLIB0001

プロジェクト ファイルで警告を抑制するには:

<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>

注意

このように警告を非表示にすると、指定した非推奨警告だけが無効になります。 診断 ID の異なる非推奨警告を含め、その他の警告は無効になりません。

関連項目