Поделиться через


SYSLIB0026: X509Certificate и X509Certificate2 являются неизменяемыми

Следующие API изменяемых сертификатов x509 помечены как устаревшие, начиная с .NET 6. При использовании этих API в коде создается предупреждение SYSLIB0026 во время компиляции.

Методы обхода проблемы

Создайте новый экземпляр X509Certificate и X509Certificate2 с помощью перегрузки конструктора, принимающей сертификат в качестве входных данных. Например:

// Change this:
cert.Import("/path/to/certificate.crt");

// To this:
cert.Dispose();
cert = new X509Certificate2("/path/to/certificate.crt");

Отключение предупреждений

Если необходимо использовать устаревшие API, вы можете отключить предупреждение в коде или в файле проекта.

Чтобы отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить предупреждение.

// Disable the warning.
#pragma warning disable SYSLIB0026

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

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

Чтобы отключить все SYSLIB0026 предупреждения в проекте, добавьте <NoWarn> свойство в файл проекта.

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

Дополнительные сведения см. в разделе Отключение предупреждений.