Källgeneratordiagnostik i .NET 6+

Om ditt .NET 6+-projekt refererar till ett paket som möjliggör källkodsgenerering av kod, till exempel en loggningslösning, körs analysverktygen som är specifika för källgenerering vid kompileringstillfället. I den här artikeln visas diagnostiken för kompilatorn som är relaterad till källgenererad kod.

Om du stöter på någon av dessa build-varningar eller -fel följer du den specifika vägledningen för diagnostik-ID:t som anges i avsnittet Referens . Du kan också ignorera varningar med det specifika SYSLIB1XXX diagnostik-ID-värdet. För mer information, se Undertrycka varningar.

Analyzer-varningar

Diagnostik-ID-värdena som är reserverade för källgenererade kodanalysvarningar är från SYSLIB1001 till SYSLIB1999.

Referens

Följande tabell innehåller ett index för diagnostiken SYSLIB1XXX i .NET 6 och senare versioner.

Diagnostik-ID beskrivning
SYSLIB1001 Metodnamn för loggning kan inte börja med _
SYSLIB1002 Inkludera inte loggnivåparametrar som mallar i loggningsmeddelandet
SYSLIB1003 InvalidLoggingMethodParameterNameTitle
SYSLIB1004 Loggningsklassen får inte vara i kapslade datatyper.
SYSLIB1005 Det gick inte att hitta en obligatorisk typdefinition
SYSLIB1006 Flera loggningsmetoder kan inte använda samma händelse-ID i en klass
SYSLIB1007 Loggningsmetoder måste returneras void
SYSLIB1008 Ett av argumenten för en loggningsmetod måste implementera Microsoft.Extensions.Logging.ILogger gränssnittet
SYSLIB1009 Loggningsmetoderna måste vara static
SYSLIB1010 Loggningsmetoderna måste vara partial
SYSLIB1011 Loggningsmetoder kan inte använda villkoret allows ref struct
SYSLIB1012 Onödig kvalifikator i loggningsmeddelande
SYSLIB1013 Inkludera inte undantagsparametrar som mallar i loggningsmeddelandet
SYSLIB1014 Loggningsmallen har inget motsvarande metodargument
SYSLIB1015 Argumentet refereras inte från loggningsmeddelandet
SYSLIB1016 Loggningsmetoder kan inte ha en kropp
SYSLIB1017 Ett LogLevel-värde måste anges i LoggerMessage attributet eller som en parameter till loggningsmetoden
SYSLIB1018 Inkludera inte loggningsparametrar som mallar i loggningsmeddelandet
SYSLIB1019 Det gick inte att hitta ett typfält Microsoft.Extensions.Logging.ILogger
SYSLIB1020 Flera fält av typen Microsoft.Extensions.Logging.ILogger hittades
SYSLIB1021 Flera objektnamn för meddelandemallar skiljer sig endast efter skiftläge
SYSLIB1022 Det går inte att ha felaktiga formatsträngar (till exempel lösa klammerparenteser)
SYSLIB1023 Det går inte att generera fler än sex argument
SYSLIB1024 Argumentet Loggningsmetod använder parametermodifierare som inte stöds out
SYSLIB1025 Flera loggningsmetoder kan inte använda samma händelsenamn i en klass
SYSLIB1026 C#-språkversionen stöds inte av loggningskällans generator.
SYSLIB1027 Den primära konstruktorparametern av typen Microsoft.Extensions.Logging.ILogger döljs av ett fält
SYSLIB1028 Argumentet för loggningsmetod använder de osupporterade parametermodifierarna params eller scoped.
SYSLIB1029 Loggningsmetodens parameter är en ref struct
SYSLIB1030 Källgeneratorn System.Text.Json genererade inte serialiseringsmetadata för typ
SYSLIB1031 Källgeneratorn System.Text.Json påträffade ett duplicerat JsonTypeInfo egenskapsnamn
SYSLIB1032 Källgeneratorn System.Text.Json påträffade en kontextklass som inte är partiell
SYSLIB1033 Källgeneratorn System.Text.Json påträffade en typ som har flera [JsonConstructor] anteckningar
SYSLIB1034 JsonSourceGenerator påträffade en JsonStringEnumConverter anteckning
SYSLIB1035 Källgeneratorn System.Text.Json påträffade en typ som har flera [JsonExtensionData] anteckningar
SYSLIB1036 Källgeneratorn System.Text.Json påträffade en ogiltig [JsonExtensionData] anteckning
SYSLIB1037 Källgeneratorn System.Text.Json påträffade en typ med init-only-egenskaper för vilka deserialisering inte stöds
SYSLIB1038 Källgeneratorn System.Text.Json påträffade en egenskap som taggats med [JsonInclude] och som har otillgängliga accessorer
SYSLIB1039 JsonSourceGenerator påträffade en JsonDerivedTypeAttribute anteckning med JsonSourceGenerationMode.Serialization aktiverad
SYSLIB1040 Ogiltig GeneratedRegexAttribute användning.
SYSLIB1041 Flera GeneratedRegexAttribute attribut tillämpades på samma metod, men endast en tillåts.
SYSLIB1042 Det angivna reguljära uttrycket är ogiltigt.
SYSLIB1043 En GeneratedRegexAttribute metod måste vara partiell, parameterlös, icke-generisk och icke-abstrakt och returnera Regex.
SYSLIB1044 Regex-generatorn kunde inte generera en fullständig källimplementering för det angivna reguljära uttrycket på grund av en intern begränsning. Mer information finns i förklaringen i den genererade källan.
SYSLIB1045 Använd GeneratedRegexAttribute för att generera implementeringen av reguljära uttryck vid kompileringstillfället.
SYSLIB1046 (Reserverad för System.Text.RegularExpressions.Generator.)
SYSLIB1047 (Reserverad för System.Text.RegularExpressions.Generator.)
SYSLIB1048 (Reserverad för System.Text.RegularExpressions.Generator.)
SYSLIB1049 (Reserverad för System.Text.RegularExpressions.Generator.)
SYSLIB1050 Ogiltig LibraryImportAttribute användning.
SYSLIB1051 Den angivna typen stöds inte av källgenererade p/invokes.
SYSLIB1052 Den angivna konfigurationen stöds inte av källgenererade p/invokes.
SYSLIB1053 De angivna LibraryImportAttribute argumenten kan inte vidarebefordras till DllImportAttribute.
SYSLIB1054 Använd LibraryImportAttribute i stället för DllImportAttribute för att generera p/invoke marshalling-kod vid kompilering.
SYSLIB1055 Ogiltig CustomMarshallerAttribute användning.
SYSLIB1056 Den angivna inbyggda typen är ogiltig.
SYSLIB1057 Marshallertypen har inte den form som krävs.
SYSLIB1058 Ogiltig NativeMarshallingAttribute användning.
SYSLIB1059 Marshaller-typen stöder inte en allokeringskonstruktor.
SYSLIB1060 Den angivna marshallertypen är ogiltig.
SYSLIB1061 Marshaller-typen har inkompatibla metodsignaturer.
SYSLIB1062 Projektet måste uppdateras med <AllowUnsafeBlocks>true</AllowUnsafeBlocks>.
SYSLIB1063 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1064 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1065 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1066 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1067 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1068 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1069 (Reserverad för Microsoft.Interop.LibraryImportGenerator.)
SYSLIB1070 Ogiltig JSImportAttribute användning.
SYSLIB1071 Ogiltig JSExportAttribute användning.
SYSLIB1072 Den angivna typen stöds inte av källgenererade JavaScript-interop.
SYSLIB1073 Den angivna konfigurationen stöds inte av källgenererade JavaScript-interop.
SYSLIB1074 JSImportAttribute kräver osäker kod.
SYSLIB1075 JSImportAttribute kräver osäker kod.
SYSLIB1076 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1077 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1078 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1079 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1080 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1081 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1082 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1083 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1084 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1085 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1086 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1087 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1088 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1089 (Reserverad för System.Runtime.InteropServices.JavaScript.JSImportGenerator.)
SYSLIB1090 Ogiltig GeneratedComInterfaceAttribute användning.
SYSLIB1091 Metoden deklareras i en annan partiell deklaration än attributet GeneratedComInterface .
SYSLIB1092 Användning av LibraryImport eller GeneratedComInterface attribut följer inte rekommendationen.
SYSLIB1093 Analysen för COM-gränssnittsgenereringen misslyckades.
SYSLIB1094 Det gick inte att generera källan i det grundläggande COM-gränssnittet. Koden genereras inte för det här gränssnittet.
SYSLIB1095 Ogiltig GeneratedComClassAttribute användning.
SYSLIB1096 Använd GeneratedComInterfaceAttribute i stället för ComImportAttribute för att generera COM-marshalkod vid kompileringstillfället.
SYSLIB1097 Den här typen implementerar minst en typ med attributet GeneratedComInterfaceAttribute . Lägg till GeneratedComClassAttribute för att möjliggöra att denna typ skickas till COM och för att exponera COM-gränssnitten för typerna med GeneratedComInterfaceAttribute från objekt av denna typ.
SYSLIB1098 .NET COM-värd med EnableComHosting stöder endast inbyggd COM-interoperabilitet. Det stöder inte källgenererad COM-interop med GeneratedComInterfaceAttribute.
SYSLIB1099 COM Interop-API:er på System.Runtime.InteropServices.Marshal stöder inte källgenererad COM och misslyckas vid körning.
SYSLIB1100 Konfigurationsbindningsgenerator: Typ stöds inte.
SYSLIB1101 Konfigurationsbindningsgenerator: Egenskapen på typen stöds inte.
SYSLIB1102 Konfigurationsbindningsgenerator: Projektets språkversion måste vara minst C# 12.
SYSLIB1103 Generator för konfigurationsbindning: Värdetyper är ogiltiga indata för konfigurationen av bindningsmetoder.
SYSLIB1104 Generator för konfigurationsbindning: Generatorn kan inte fastställa målkonfigurationstypen.
SYSLIB1105 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1106 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)(Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1107 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1108 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1109 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1110 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1111 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1112 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1113 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1114 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1115 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1116 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1117 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1118 (Reserverad för Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1201 Det går inte att använda ValidateObjectMembersAttribute eller ValidateEnumeratedItemsAttribute på fält eller egenskaper med öppna generiska typer.
SYSLIB1202 En medlemstyp har inga fält eller egenskaper att verifiera.
SYSLIB1203 En typ har inga fält eller egenskaper att verifiera.
SYSLIB1204 En typ som har kommenterats med OptionsValidatorAttribute implementerar inte det nödvändiga gränssnittet.
SYSLIB1205 En typ innehåller redan en implementering av metoden "Validate".
SYSLIB1206 Det går inte att verifiera privata fält eller egenskaper.
SYSLIB1207 Medlemstypen kan inte räknas upp.
SYSLIB1208 Validatorer som används för transitiv eller uppräkningsbar validering måste ha en konstruktor utan parametrar.
SYSLIB1209 OptionsValidatorAttribute kan inte tillämpas på en statisk klass.
SYSLIB1210 Null-validatortyp som angetts för attributen ValidateObjectMembersAttribute eller ValidateEnumeratedItemsAttribute .
SYSLIB1211 Cirkelreferenser som inte stöds i modelltyper.
SYSLIB1212 Medlemmen saknar potentiellt transitiv validering.
SYSLIB1213 Medlem som eventuellt saknar uppräkningsbar validering.
SYSLIB1214 Det går inte att verifiera konstanter, statiska fält eller egenskaper.
SYSLIB1215 Verifieringsattributet för medlemmen är inte tillgängligt från valideringstypen.
SYSLIB1216 C#-språkversionen stöds inte av alternativverifieringskällans generator.
SYSLIB1217 Valideringsattributet gäller endast för egenskaper av typen sträng, matris eller ICollection; det kan inte användas med andra typer.
SYSLIB1218 (Reserverad för Microsoft.Extensions.Options.SourceGeneration.)
SYSLIB1219 (Reserverad för Microsoft.Extensions.Options.SourceGeneration.)
SYSLIB1220 JsonSourceGenerator påträffade en [JsonConverterAttribute] med ett ogiltigt typargument.
SYSLIB1221 JsonSourceGenerator stöder inte den här C#-språkversionen.
SYSLIB1222 Konstruktorn som har kommenterats med JsonConstructorAttribute är inte tillgänglig.
SYSLIB1223 Konstruktorn som har kommenterats med JsonConstructorAttribute är inte tillgänglig.
SYSLIB1224 Typer som kommenterats med JsonSerializableAttribute måste vara klasser som härleds från JsonSerializerContext.
SYSLIB1225 (Reserverad för System.Text.Json.SourceGeneration.)
SYSLIB1226 (Reserverad för System.Text.Json.SourceGeneration.)
SYSLIB1227 (Reserverad för System.Text.Json.SourceGeneration.)
SYSLIB1228 (Reserverad för System.Text.Json.SourceGeneration.)
SYSLIB1229 (Reserverad för System.Text.Json.SourceGeneration.)
SYSLIB1230 Det går inte att härleda från ett GeneratedComInterface-attributgränssnitt som definierats i en annan sammansättning.

Ignorera varningar

Vi rekommenderar att du använder någon av lösningarna när det är möjligt. Men om du inte kan ändra koden kan du ignorera varningen via ett #pragma direktiv eller en <NoWarn> projektinställning. Om källgeneratordiagnostiken SYSLIB1XXX inte visas som ett fel kan du utelämna varningen i koden eller i projektfilen.

Så här utelämnar du varningarna i koden (ersätt diagnostik-ID:t efter behov):

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Så här utelämnar du varningarna i en projektfil (ersätt diagnostik-ID:n efter behov):

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