SYSLIB0042:ECC 类型上的 FromXmlString 和 ToXmlString 已过时
从 .NET 7 开始,在椭圆曲线加密 (ECC) 类型上使用的 FromXmlString
和 ToXmlString
方法已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0042
。 它们从未实现过,总是引发 PlatformNotSupportedException 异常。 过时会影响以下方法:
- ECDiffieHellmanCng.FromXmlString(String, ECKeyXmlFormat)
- ECDiffieHellmanCng.ToXmlString(ECKeyXmlFormat)
- ECDiffieHellmanCngPublicKey.FromXmlString(String)
- ECDiffieHellmanCngPublicKey.ToXmlString()
- ECDiffieHellmanPublicKey.ToXmlString()
- ECDsaCng.FromXmlString(String, ECKeyXmlFormat)
- ECDsaCng.ToXmlString(ECKeyXmlFormat)
解决方法
使用标准数据格式来交换椭圆曲线 (EC) 密钥。
使用 ExportSubjectPublicKeyInfo
或 ExportPkcs8PrivateKey
而不是 ToXmlString
,具体取决于你是想要公钥还是私钥。
使用 ImportSubjectPublicKeyInfo
或 ImportPkcs8PrivateKey
而不是 FromXmlString
,具体取决于你是想要导入公钥还是私钥。
抑制警告
如果必须使用已过时的 API,可在代码或项目文件中禁止显示警告。
若只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用警告。
// Disable the warning.
#pragma warning disable SYSLIB0042
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0042
若要禁止显示项目中的所有 SYSLIB0042
警告,请将属性 <NoWarn>
添加到项目文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0042</NoWarn>
</PropertyGroup>
</Project>
有关详细信息,请参阅取消警告。