Bagikan melalui


SYSLIB1039: JsonSourceGenerator mengalami anotasi JsonDerivedTypeAttribute dengan JsonSourceGenerationMode.Serialization diaktifkan

JsonDerivedTypeAttribute anotasi didukung untuk pembuatan sumber, tetapi tidak untuk konteks yang dianotasi dengan JsonSourceGenerationMode.Serialization. Artinya, atribut bekerja dengan generator sumber metadata, tetapi tidak dalam metode jalur cepat.

Penyelesaian masalah

Hapus atribut, atau hapus JsonSourceGenerationMode.Serialization anotasi dari konteks serialisasi Anda.

Menutupi peringatan

Sebaiknya Anda menggunakan salah satu solusi jika memungkinkan. Namun, jika Anda tidak dapat mengubah kode, Anda dapat menyembunyikan peringatan melalui petunjuk #pragma atau pengaturan proyek <NoWarn>. Jika diagnostik generator sumber SYSLIB1XXX tidak muncul sebagai kesalahan, Anda dapat menyembunyikan peringatan dalam kode atau dalam file proyek Anda.

Untuk menutupi peringatan dalam kode:

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Untuk menutupi peringatan dalam file proyek:

<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>