SYSLIB1034:JsonSourceGenerator 遇到 [JsonStringEnumConverter] 注释

非泛型 JsonStringEnumConverter 需要动态代码,不能与源生成一起使用。

解决方法

请改为使用JsonStringEnumConverter<TEnum>,这不需要生成运行时代码。

禁止显示警告

建议尽可能使用其中一种解决方法。 但是,如果无法更改代码,可以通过指令或#pragma项目设置取消警告<NoWarn>SYSLIB1XXX如果源生成器诊断未显示为错误,则可以在代码或项目文件中禁止显示警告。

若要禁止显示代码中的警告,请执行以下操作:

// Disable the warning.
#pragma warning disable SYSLIB1006

// Code that generates compiler diagnostic.
// ...

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

若要禁止显示项目文件中的警告,请执行以下操作:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net6.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB1002 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB1006</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB1002;SYSLIB1006;SYSLIB1007</NoWarn>
  </PropertyGroup>
</Project>