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


SYSLIB1039: JsonSourceGenerator обнаружил заметку с включенным JsonDerivedTypeAttributeJsonSourceGenerationMode.Serialization

JsonDerivedTypeAttribute заметки поддерживаются для создания исходного кода, но не для контекстов, которые аннотированы с JsonSourceGenerationMode.Serialization. То есть атрибут работает с генератором источников метаданных, но не в методах быстрого пути.

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

Удалите атрибут или удалите заметку JsonSourceGenerationMode.Serialization из контекста сериализации.

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

Рекомендуется по возможности использовать одно из обходных решений. Однако если вы не можете изменить код, это предупреждение можно отключить с помощью директивы #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>