zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SYSLIB0026:X509Certificate 和 X509Certificate2 是不可变的

2023-04-18 17:00:02 时间

从 .NET 6 开始,以下可变 x509 证书 API 将标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0026。

X509Certificate()

X509Certificate.Import

X509Certificate2()

X509Certificate2.Import

解决方法

使用接受证书作为输入的构造函数重载创建 X509Certificate 和 X509Certificate2 的新实例。 例如:

// Change this:

cert.Import("/path/to/certficate.crt");

// To this:

cert.Dispose();

cert = new X509Certificate2("/path/to/certificate.crt");

禁止显示警告

建议尽可能使用可用的解决方法。 但是,如果无法更改代码,可以通过 #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>net5.0</TargetFramework>

<!-- NoWarn below suppresses SYSLIB0001 project-wide -->

<NoWarn>