SYSLIB0043:ECDiffieHellmanPublicKey.ToByteArray 已过时

从 .NET 7 开始,以下方法已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0043

ECDiffieHellmanPublicKey.ToByteArray() 方法没有隐含的文件格式。 此外,对于内置实现,它会在所有非 Windows 操作系统上引发 PlatformNotSupportedException。 由于 ECDiffieHellmanPublicKey 还有一个标准格式导出(通过 ExportSubjectPublicKeyInfo() 方法),因此,较旧的成员已过时。

解决方法

如果要导出公钥值,请改用 ExportSubjectPublicKeyInfo() 方法。

对于新的派生类型(或当前不调用 ECDiffieHellmanPublicKey(Byte[]) 构造函数的现有派生类型),请不要调用受保护的 ECDiffieHellmanPublicKey(Byte[]) 构造函数,不要重写 ToByteArray() 以引发异常,也不要接受返回空数组的默认行为。

对于已调用受保护的 ECDiffieHellmanPublicKey(Byte[]) 构造函数的现有派生类型,请继续调用该构造函数并抑制 SYSLIB0043 警告。

抑制警告

如果必须使用已过时的 API,可在代码或项目文件中禁止显示警告。

若只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用警告。

// Disable the warning.
#pragma warning disable SYSLIB0043

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

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

若要禁止显示项目中的所有 SYSLIB0043 警告,请将属性 <NoWarn> 添加到项目文件。

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

有关详细信息,请参阅取消警告