共用方式為


SYSLIB0057:二進位和檔案內容的 X509Certificate2 和 X509Certificate 建構函式已過時

從 .NET 9 開始,X509CertificateX509Certificate2 上接受內容為 byte[]ReadOnlySpan<byte>string 檔案路徑的建構函式已過時。 X509Certificate2Collection 上的 Import 方法也已經過時。 在程式碼中呼叫這些方法會導致在編譯時間產生警告 SYSLIB0057

淘汰的原因

受影響的 API 支援以多種格式載入憑證。 例如,new X509Certificate2(data) 已從名為 databyte[] 載入憑證。 data 可以是任何支援的格式之一,包括 X.509、PKCS7 或 PKCS12/PFX。

雖然這個方法很容易使用,但會造成以非預期格式傳遞使用者提供資料的問題。 此方法可能會在僅預期載入 X.509 內容的位置,載入 PKCS12。 或者,可能會因以不同的方式處理資料而造成互通性問題。

因應措施

根據預期的內容類型,使用不同的 API 來載入憑證內容。

稱為 X509CertificateLoader 的新類別可用來載入 X.509 或 PKCS12 內容:

  • 如果您要載入 X.509 內容,請使用 X509CertificateLoader.LoadCertificateX509CertificateLoader.LoadCertificateFromFile
  • 如果您要載入 PKCS12 內容, 請使用 X509CertificateLoader.LoadPkcs12X509CertificateLoader.LoadPkcs12FromFileX509CertificateLoader.LoadPkcs12CollectionX509CertificateLoader.LoadPkcs12CollectionFromFile
  • 如果您要載入 PKCS7 內容,請使用 System.Security.Cryptography.Pkcs 套件中的 SignedCms 檢查 PKCS7 內容中的憑證。
  • 如果您不確定要載入的內容類型,請使用 GetCertContentType 來判斷內容類型,並呼叫適當的 API。

Microsoft.Bcl.Cryptography 套件 (英文) 針對 .NET Framework 和 .NET Standard 提供 X509CertificateLoader

隱藏警告

若您必須使用已淘汰的 API,您可以在程式碼或專案檔中隱藏警告。

若要只隱藏單一違規,請將前置處理器指示詞新增至原始程式碼檔案,以停用並重新啟用警告。

// Disable the warning.
#pragma warning disable SYSLIB0057

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

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

若要隱藏專案中的所有 SYSLIB0057 警告,請將 <NoWarn> 屬性新增至專案檔。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0057</NoWarn>
  </PropertyGroup>
</Project>

如需詳細資訊,請參閱隱藏警告