Diagnostyka generatora kodu źródłowego w .NET 6+

Jeśli projekt .NET 6 lub nowszy odwołuje się do pakietu, który umożliwia generowanie kodu źródłowego, na przykład rozwiązanie do rejestrowania, analizatory specyficzne dla generowania źródła będą uruchamiane w czasie kompilacji. W tym artykule wymieniono diagnostykę kompilatora związaną z kodem wygenerowanym przez źródło.

Jeśli wystąpi jedno z tych ostrzeżeń lub błędów kompilacji, postępuj zgodnie z określonymi wskazówkami podanymi dla identyfikatora diagnostycznego wymienionego w sekcji Dokumentacja . Można również pominąć ostrzeżenia przy użyciu określonej SYSLIB1XXX wartości identyfikatora diagnostycznego. Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.

Ostrzeżenia analizatora

Wartości identyfikatorów diagnostycznych zarezerwowane dla ostrzeżeń analizatora kodu źródłowego generowanego są od SYSLIB1001 do SYSLIB1999.

Referencja

Poniższa tabela zawiera indeks do diagnostyki SYSLIB1XXX w .NET 6 i nowszych wersjach.

Identyfikator diagnostyczny opis
SYSLIB1001 Nazwy metod rejestrowania nie mogą zaczynać się od _
SYSLIB1002 Nie dołączaj parametrów poziomu dziennika jako szablonów w wiadomości dziennika
SYSLIB1003 InvalidLoggingMethodParameterNameTitle
SYSLIB1004 Klasa logowania nie może być w typach zagnieżdżonych.
SYSLIB1005 Nie można odnaleźć wymaganej definicji typu
SYSLIB1006 Wiele metod rejestrowania nie może używać tego samego identyfikatora zdarzenia w klasie
SYSLIB1007 Metody logowania muszą zwracać void
SYSLIB1008 Jeden z argumentów metody rejestrowania musi implementować Microsoft.Extensions.Logging.ILogger interfejs
SYSLIB1009 Metody rejestrowania muszą być następujące: static
SYSLIB1010 Metody rejestrowania muszą być następujące: partial
SYSLIB1011 Metody rejestrowania nie mogą używać allows ref struct ograniczenia
SYSLIB1012 Nadmiarowy kwalifikator w komunikacie logowania
SYSLIB1013 Nie dołączaj parametrów wyjątku jako szablonów w komunikacie rejestrowania
SYSLIB1014 Szablon logowania nie ma odpowiadającego argumentu metody
SYSLIB1015 Argument nie jest przywoływany w komunikacie logowania
SYSLIB1016 Metody rejestrowania nie mogą mieć treści
SYSLIB1017 Wartość LogLevel musi być podana w atrybucie LoggerMessage lub jako parametr metody rejestrowania
SYSLIB1018 Nie dołączaj parametrów rejestratora jako szablonów w komunikacie rejestrowania
SYSLIB1019 Nie można odnaleźć pola typu Microsoft.Extensions.Logging.ILogger
SYSLIB1020 Znaleziono wiele pól typu Microsoft.Extensions.Logging.ILogger
SYSLIB1021 Wiele nazw elementów szablonu wiadomości różni się tylko wielkością liter
SYSLIB1022 Nie można mieć źle sformułowanych ciągów formatu (na przykład zwisające nawiasy klamrowe)
SYSLIB1023 Generowanie więcej niż sześciu argumentów nie jest obsługiwane
SYSLIB1024 Argument metody rejestrowania używa nieobsługiwanego out modyfikatora parametrów
SYSLIB1025 Wiele metod rejestrowania nie może używać tej samej nazwy zdarzenia w klasie
SYSLIB1026 Wersja języka C# nie jest obsługiwana przez generator kodu dla logowania.
SYSLIB1027 Podstawowy parametr konstruktora typu Microsoft.Extensions.Logging.ILogger jest ukryty przez pole
SYSLIB1028 Argument metody rejestrowania używa nieobsługiwanego params lub scoped modyfikatora parametrów
SYSLIB1029 Parametr metody rejestrowania jest parametrem ref struct
SYSLIB1030 Generator System.Text.Json źródła nie wygenerował metadanych serializacji dla typu
SYSLIB1031 Generator System.Text.Json źródła napotkał zduplikowaną JsonTypeInfo nazwę właściwości
SYSLIB1032 Generator System.Text.Json źródła napotkał klasę kontekstu, która nie jest częściowa
SYSLIB1033 Generator System.Text.Json źródła napotkał typ z wieloma [JsonConstructor] adnotacjami
SYSLIB1034 Element JsonSourceGenerator napotkał adnotację JsonStringEnumConverter
SYSLIB1035 Generator źródła System.Text.Json napotkał typ, który ma wiele adnotacji [JsonExtensionData]
SYSLIB1036 Generator System.Text.Json źródła napotkał nieprawidłową [JsonExtensionData] adnotację
SYSLIB1037 Generator System.Text.Json źródła napotkał typ z właściwościami tylko inicjowania, dla których deserializacja nie jest obsługiwana
SYSLIB1038 Generator System.Text.Json źródła napotkał właściwość oznaczoną adnotacją [JsonInclude], która ma niedostępne akcesory
SYSLIB1039 Element JsonSourceGenerator napotkał adnotację z włączoną obsługą JsonDerivedTypeAttributeJsonSourceGenerationMode.Serialization
SYSLIB1040 Nieprawidłowe GeneratedRegexAttribute użycie.
SYSLIB1041 Do tej samej metody zastosowano wiele GeneratedRegexAttribute atrybutów, ale tylko jeden z nich jest dozwolony.
SYSLIB1042 Określone wyrażenie regularne jest nieprawidłowe.
SYSLIB1043 GeneratedRegexAttribute Metoda musi być częściowa, bez parametrów, niegeneryczna i nie abstrakcyjna oraz zwracać wartość Regex.
SYSLIB1044 Generator wyrażeń regularnych nie może wygenerować pełnej implementacji źródła dla określonego wyrażenia regularnego z powodu wewnętrznego ograniczenia. Aby uzyskać więcej informacji, zobacz wyjaśnienie wygenerowanego źródła.
SYSLIB1045 Użyj GeneratedRegexAttribute polecenia , aby wygenerować implementację wyrażeń regularnych w czasie kompilacji.
SYSLIB1046 (Zarezerwowane dla System.Text.RegularExpressions.Generator).
SYSLIB1047 (Zarezerwowane dla System.Text.RegularExpressions.Generator).
SYSLIB1048 (Zarezerwowane dla System.Text.RegularExpressions.Generator).
SYSLIB1049 (Zarezerwowane dla System.Text.RegularExpressions.Generator).
SYSLIB1050 Nieprawidłowe LibraryImportAttribute użycie.
SYSLIB1051 Określony typ nie jest obsługiwany przez wywołania p/invoke wygenerowane przez źródło.
SYSLIB1052 Określona konfiguracja nie jest obsługiwana przez wywołania p/invoke wygenerowane przez źródło.
SYSLIB1053 Nie można przekazać określonych LibraryImportAttribute argumentów do DllImportAttribute.
SYSLIB1054 Użyj LibraryImportAttribute zamiast DllImportAttribute, aby wygenerować kod marshalling p/invoke podczas kompilacji.
SYSLIB1055 Nieprawidłowe CustomMarshallerAttribute użycie.
SYSLIB1056 Określony typ pierwotny jest nieprawidłowy.
SYSLIB1057 Typ marshallera nie ma wymaganego kształtu.
SYSLIB1058 Nieprawidłowe NativeMarshallingAttribute użycie.
SYSLIB1059 Typ marshallera nie obsługuje konstruktora alokującego.
SYSLIB1060 Określony typ marshallera jest nieprawidłowy.
SYSLIB1061 Typ marshaller ma niezgodne sygnatury metody.
SYSLIB1062 Projekt musi zostać zaktualizowany przy użyciu <AllowUnsafeBlocks>true</AllowUnsafeBlocks>.
SYSLIB1063 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1064 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1065 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1066 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1067 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1068 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1069 (Zarezerwowane dla Microsoft.Interop.LibraryImportGenerator).
SYSLIB1070 Nieprawidłowe JSImportAttribute użycie.
SYSLIB1071 Nieprawidłowe JSExportAttribute użycie.
SYSLIB1072 Określony typ nie jest obsługiwany przez międzyoperację języka JavaScript wygenerowaną przez źródło.
SYSLIB1073 Określona konfiguracja nie jest obsługiwana przez międzyoperację języka JavaScript wygenerowaną przez źródło.
SYSLIB1074 JSImportAttribute wymaga niebezpiecznego kodu.
SYSLIB1075 JSImportAttribute wymaga niebezpiecznego kodu.
SYSLIB1076 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1077 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1078 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1079 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1080 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1081 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1082 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1083 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1084 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1085 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1086 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1087 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1088 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1089 (Zarezerwowane dla elementu System.Runtime.InteropServices.JavaScript.JSImportGenerator).
SYSLIB1090 Nieprawidłowe GeneratedComInterfaceAttribute użycie.
SYSLIB1091 Metoda jest zadeklarowana w innym częściowym zadeklarowaniu niż atrybut GeneratedComInterface.
SYSLIB1092 Użycie atrybutu LibraryImport lub GeneratedComInterface nie jest zgodne z zaleceniem.
SYSLIB1093 Analiza generowania interfejsu COM nie powiodła się.
SYSLIB1094 Podstawowy interfejs COM nie wygenerował źródła. Kod nie zostanie wygenerowany dla tego interfejsu.
SYSLIB1095 Nieprawidłowe GeneratedComClassAttribute użycie.
SYSLIB1096 Użyj GeneratedComInterfaceAttribute zamiast ComImportAttribute do generowania kodu marshalingu COM w czasie kompilacji.
SYSLIB1097 Ten typ implementuje co najmniej jeden typ z atrybutem GeneratedComInterfaceAttribute . Dodaj GeneratedComClassAttribute, aby umożliwić przekazywanie tego typu do COM i uwidocznienie interfejsów COM dla typów, które obejmują GeneratedComInterfaceAttribute z obiektów tego typu.
SYSLIB1098 .NET hosting COM z EnableComHosting obsługuje tylko wbudowaną komunikację z COM. Nie obsługuje on międzyoperacjności modelu COM generowanego przez źródło za pomocą polecenia GeneratedComInterfaceAttribute.
SYSLIB1099 Interfejsy API międzyoperacyjności COM na System.Runtime.InteropServices.Marshal nie obsługują COM generowanego przez źródło i nie będą działać w czasie wykonywania.
SYSLIB1100 Generator powiązań konfiguracji: typ nie jest obsługiwany.
SYSLIB1101 Generator powiązań konfiguracji: właściwość typu nie jest obsługiwana.
SYSLIB1102 Generator wiązania konfiguracji: wersja językowa projektu musi być co najmniej C# 12.
SYSLIB1103 Generator powiązań konfiguracji: typy wartości są nieprawidłowymi danymi wejściowymi do metod konfiguracji "Bind".
SYSLIB1104 Generator powiązań konfiguracji: Generator nie może określić docelowego typu konfiguracji.
SYSLIB1105 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1106 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration.)(Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration.)
SYSLIB1107 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1108 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1109 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1110 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1111 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1112 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1113 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1114 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1115 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1116 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1117 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1118 (Zarezerwowane dla Microsoft.Extensions.Configuration.Binder.SourceGeneration).)
SYSLIB1201 Nie można używać ValidateObjectMembersAttributeValidateEnumeratedItemsAttribute pól ani właściwości z otwartymi typami ogólnymi.
SYSLIB1202 Typ elementu członkowskiego nie ma pól ani właściwości do zweryfikowania.
SYSLIB1203 Typ nie ma pól ani właściwości do zweryfikowania.
SYSLIB1204 Typ z adnotacjami OptionsValidatorAttribute nie implementuje niezbędnego interfejsu.
SYSLIB1205 Typ zawiera już implementację metody "Validate".
SYSLIB1206 Nie można zweryfikować prywatnych pól ani właściwości.
SYSLIB1207 Typ członkowski nie jest wyliczalny.
SYSLIB1208 Moduły sprawdzania poprawności używane do walidacji przechodniej lub wyliczalnej muszą mieć konstruktor bez parametrów.
SYSLIB1209 OptionsValidatorAttribute nie można zastosować do klasy statycznej.
SYSLIB1210 Nie określono typu walidatora dla atrybutów ValidateObjectMembersAttribute lub ValidateEnumeratedItemsAttribute.
SYSLIB1211 Nieobsługiwane odwołania cykliczne w typach modeli.
SYSLIB1212 Członek może brakować weryfikacji transytywnej.
SYSLIB1213 Członek może brakować walidacji wyliczalnej.
SYSLIB1214 Nie można zweryfikować stałych, pól statycznych ani właściwości.
SYSLIB1215 Atrybut walidacji członka jest niedostępny z typu walidatora.
SYSLIB1216 Wersja języka C# nie jest obsługiwana przez generator źródeł weryfikacji opcji.
SYSLIB1217 Atrybut weryfikacji ma zastosowanie tylko do właściwości typu ciąg, tablica lub ICollection; nie może być używany z innymi typami.
SYSLIB1218 (Zarezerwowane dla Microsoft.Extensions.Options.SourceGeneration).)
SYSLIB1219 (Zarezerwowane dla Microsoft.Extensions.Options.SourceGeneration).)
SYSLIB1220 Obiekt JsonSourceGenerator napotkał element [JsonConverterAttribute] z nieprawidłowym argumentem typu.
SYSLIB1221 JsonSourceGenerator nie obsługuje tej wersji języka C#.
SYSLIB1222 Konstruktor z adnotacją JsonConstructorAttribute jest niedostępny.
SYSLIB1223 Konstruktor z adnotacją JsonConstructorAttribute jest niedostępny.
SYSLIB1224 Typy z adnotacjami z atrybutem JsonSerializableAttribute muszą być klasami pochodnymi z klasy JsonSerializerContext.
SYSLIB1225 (Zarezerwowane dla System.Text.Json.SourceGeneration).)
SYSLIB1226 (Zarezerwowane dla System.Text.Json.SourceGeneration).)
SYSLIB1227 (Zarezerwowane dla System.Text.Json.SourceGeneration).)
SYSLIB1228 (Zarezerwowane dla System.Text.Json.SourceGeneration).)
SYSLIB1229 (Zarezerwowane dla System.Text.Json.SourceGeneration).)
SYSLIB1230 Wyprowadzanie z atrybutowanego interfejsu GeneratedComInterface zdefiniowanego w innym zestawie nie jest obsługiwane.

Pomijanie ostrzeżeń

Zaleca się użycie jednego z obejść, jeśli jest to możliwe. Jeśli jednak nie możesz zmienić kodu, możesz pominąć ostrzeżenie za pomocą #pragma dyrektywy lub <NoWarn> ustawienia projektu. Jeśli diagnostyka SYSLIB1XXX generatora źródłowego nie pojawia się jako błąd, możesz pominąć ostrzeżenie w kodzie lub w pliku projektu.

Aby pominąć ostrzeżenia w kodzie (w razie potrzeby zastąp identyfikator diagnostyczny):

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Aby zignorować ostrzeżenia w pliku projektu (w razie potrzeby wymień identyfikatory diagnostyczne):

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