Condividi tramite


SYSLIB1039: JsonSourceGenerator ha rilevato un'annotazione JsonDerivedTypeAttribute con JsonSourceGenerationMode.Serialization abilitato

Le annotazioni JsonDerivedTypeAttribute sono supportate per la generazione di origine, ma non per i contesti annotati con JsonSourceGenerationMode.Serialization. Ovvero, l'attributo funziona con il generatore di origine metadati, ma non nei metodi fast-path.

Soluzioni alternative

Rimuovere l'attributo o rimuovere l'annotazione JsonSourceGenerationMode.Serialization dal contesto di serializzazione.

Non visualizzare gli avvisi

È consigliabile usare una delle soluzioni alternative quando possibile. Tuttavia, se non è possibile modificare il codice, è possibile eliminare gli avvisi tramite una direttiva #pragma o un'impostazione di progetto <NoWarn>. Se la diagnostica del generatore di origine SYSLIB1XXX non viene visualizzata come errore, è possibile evitare di visualizzare l'avviso nel codice o nel file di progetto.

Per eliminare gli avvisi nel codice:

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Per eliminare gli avvisi in un file di progetto:

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