SYSLIB1039 : JsonSourceGenerator a rencontré une JsonDerivedTypeAttribute annotation avec JsonSourceGenerationMode.Serialization activé

JsonDerivedTypeAttribute Les annotations sont prises en charge pour la génération de source, mais pas pour les contextes annotés avec JsonSourceGenerationMode.Serialization. Autrement dit, l’attribut fonctionne avec le générateur de source de métadonnées, mais pas dans les méthodes de chemin rapide.

Solutions de contournement

Supprimez l’attribut ou supprimez l’annotation JsonSourceGenerationMode.Serialization de votre contexte de sérialisation.

Supprimer les avertissements

Il est recommandé d’utiliser l’une des solutions de contournement si possible. Toutefois, si vous ne pouvez pas modifier votre code, vous pouvez supprimer l’avertissement par le biais d’une directive ou d’un #pragma<NoWarn> paramètre de projet. Si le diagnostic du SYSLIB1XXX générateur source ne s’affiche pas comme une erreur, vous pouvez supprimer l’avertissement dans le code ou dans votre fichier projet.

Pour supprimer les avertissements dans le code (remplacez l’ID de diagnostic si nécessaire) :

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Pour supprimer les avertissements dans un fichier projet (remplacez les ID de diagnostic si nécessaire) :

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net10.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>