Diagnósticos del generador de origen en .NET 6 y versiones posteriores
Si el proyecto de .NET 6 y versiones posteriores hace referencia a un paquete que permite la generación de código fuente, por ejemplo, una solución de registro, los analizadores específicos de la generación de origen se ejecutarán en tiempo de compilación. En este artículo se enumeran los diagnósticos del compilador relacionados con el código generado por el código fuente.
Si se producen una de estas advertencias o errores de compilación, siga las instrucciones específicas proporcionadas para el Id. de diagnóstico en la sección Referencia. También puede suprimir advertencias mediante el valor específico del identificador de diagnóstico SYSLIB1XXX
. Para obtener más información, vea Suprimir advertencias.
Advertencias del analizador
Los valores de Id. de diagnóstico reservados para las advertencias del analizador de código generado por el código fuente son SYSLIB1001
mediante SYSLIB1999
.
Referencia
En la tabla siguiente se proporciona un índice para los diagnósticos SYSLIB1XXX
en .NET 6 y versiones posteriores.
Id. de diagnóstico | Descripción |
---|---|
SYSLIB1001 | Los nombres de métodos de registro no pueden empezar por _ . |
SYSLIB1002 | No incluya parámetros de nivel de registro como plantillas en el mensaje de registro. |
SYSLIB1003 | InvalidLoggingMethodParameterNameTitle |
SYSLIB1004 | La clase de registro no puede estar en un tipo anidado. |
SYSLIB1005 | No se ha encontrado una definición de tipo requerida. |
SYSLIB1006 | Varios métodos de registro no pueden usar el mismo id. de evento en una clase. |
SYSLIB1007 | Los métodos de registro deben devolver void . |
SYSLIB1008 | Uno de los argumentos de un método de registro debe implementar la interfaz Microsoft.Extensions.Logging.ILogger . |
SYSLIB1009 | Los métodos de registro deben ser static . |
SYSLIB1010 | Los métodos de registro deben ser partial . |
SYSLIB1011 | Los métodos de registro no pueden ser genéricos. |
SYSLIB1012 | Calificador redundante en el mensaje de registro. |
SYSLIB1013 | No incluya parámetros de excepción como plantillas en el mensaje de registro. |
SYSLIB1014 | La plantilla de registro no tiene ningún argumento de método correspondiente. |
SYSLIB1015 | No se hace referencia al argumento desde el mensaje de registro. |
SYSLIB1016 | Los métodos de registro no pueden tener un cuerpo. |
SYSLIB1017 | Se debe proporcionar un valor LogLevel en el atributo LoggerMessage o como parámetro para el método de registro. |
SYSLIB1018 | No incluya parámetros de registrador como plantillas en el mensaje de registro. |
SYSLIB1019 | No se ha encontrado un campo de tipo Microsoft.Extensions.Logging.ILogger . |
SYSLIB1020 | Se han encontrado varios campos de tipo Microsoft.Extensions.Logging.ILogger . |
SYSLIB1021 | Los nombres de varios elementos de plantilla de mensaje solo difieren por el uso de mayúsculas y minúsculas. |
SYSLIB1022 | No se pueden tener cadenas de formato con formato incorrecto (por ejemplo, llaves de cierre). |
SYSLIB1023 | No se admite la generación de más de seis argumentos. |
SYSLIB1024 | El argumento del método de registro usa un modificador de parámetros out no admitido |
SYSLIB1025 | Varios métodos de registro no pueden usar el mismo nombre de evento en una clase |
SYSLIB1026 | La versión del lenguaje C# no es compatible con el generador de origen de registro. |
SYSLIB1027 | El parámetro de constructor principal del tipo Microsoft.Extensions.Logging.ILogger está oculto por un campo |
SYSLIB1028 | (Reservado para el registro) |
SYSLIB1029 | (Reservado para el registro) |
SYSLIB1030 | El generador de origenSystem.Text.Json no generó metadatos de serialización para el tipo |
SYSLIB1031 | El generador de origen System.Text.Json ha encontrado un nombre de propiedad JsonTypeInfo duplicado |
SYSLIB1032 | El generador de origen System.Text.Json ha encontrado una clase de contexto que no es parcial |
SYSLIB1033 | El generador de origen System.Text.Json ha encontrado un tipo que tiene varias anotaciones [JsonConstructor] |
SYSLIB1034 | JsonSourceGenerator ha encontrado una anotación JsonStringEnumConverter |
SYSLIB1035 | El generador de origen System.Text.Json ha encontrado un tipo que tiene varias anotaciones [JsonExtensionData] |
SYSLIB1036 | El generador de origen System.Text.Json ha encontrado una anotación [JsonExtensionData] no válida |
SYSLIB1037 | El generador de origen System.Text.Json ha encontrado un tipo con propiedades solo init para el que no se admite la deserialización |
SYSLIB1038 | El generador de origen System.Text.Json ha encontrado una propiedad anotada con [JsonInclude] que tiene descriptores de acceso inaccesibles |
SYSLIB1039 | JsonSourceGenerator ha encontrado una JsonDerivedTypeAttribute anotación con habilitadoJsonSourceGenerationMode.Serialization |
SYSLIB1040 | Uso de GeneratedRegexAttribute no válido. |
SYSLIB1041 | Varios atributos de GeneratedRegexAttribute se han aplicado al mismo método, pero solo se permite uno. |
SYSLIB1042 | La expresión regular especificada no es válida. |
SYSLIB1043 | Un método GeneratedRegexAttribute debe ser parcial, sin parámetros, no genérico y no abstracto, y devolver Regex. |
SYSLIB1044 | El generador de regex no pudo generar una implementación de orígenes completa para la expresión regular especificada, debido a una limitación interna. Consulte la explicación en el origen generado para obtener más detalles. |
SYSLIB1045 | Use GeneratedRegexAttribute para generar la implementación de expresiones regulares en tiempo de compilación. |
SYSLIB1046 | (Reservado para System.Text.RegularExpressions.Generator) |
SYSLIB1047 | (Reservado para System.Text.RegularExpressions.Generator) |
SYSLIB1048 | (Reservado para System.Text.RegularExpressions.Generator) |
SYSLIB1049 | (Reservado para System.Text.RegularExpressions.Generator) |
SYSLIB1050 | Uso de LibraryImportAttribute no válido. |
SYSLIB1051 | El tipo especificado no está admitido por p/invokes de un generador de código fuente. |
SYSLIB1052 | La configuración especificada no está admitida por p/invokes de un generador de código fuente. |
SYSLIB1053 | Los argumentos especificados LibraryImportAttribute no se pueden reenviar a DllImportAttribute. |
SYSLIB1054 | Use LibraryImportAttribute en lugar de DllImportAttribute para generar código de serialización p/invoke en tiempo de compilación. |
SYSLIB1055 | Uso de CustomMarshallerAttribute no válido. |
SYSLIB1056 | El tipo nativo especificado no es válido. |
SYSLIB1057 | El tipo de serializador no tiene la forma necesaria. |
SYSLIB1058 | Uso de NativeMarshallingAttribute no válido. |
SYSLIB1059 | El tipo de serializador no admite un constructor de asignación. |
SYSLIB1060 | El tipo de serializador especificado no es válido. |
SYSLIB1061 | El tipo de serializador tiene firmas de método incompatibles. |
SYSLIB1062 | El proyecto debe actualizarse con <AllowUnsafeBlocks>true</AllowUnsafeBlocks> . |
SYSLIB1063 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1064 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1065 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1066 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1067 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1068 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1069 | (Reservado para Microsoft.Interop.LibraryImportGenerator) |
SYSLIB1070 | Uso de JSImportAttribute no válido. |
SYSLIB1071 | Uso de JSExportAttribute no válido. |
SYSLIB1072 | La interoperabilidad de JavaScript generada mediante código fuente no admite el tipo especificado. |
SYSLIB1073 | La interoperabilidad de JavaScript generada mediante código fuente no admite la configuración especificada. |
SYSLIB1074 | JSImportAttribute requiere código no seguro. |
SYSLIB1075 | JSImportAttribute requiere código no seguro. |
SYSLIB1076 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1077 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1078 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1079 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1080 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1081 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1082 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1083 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1084 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1085 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1086 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1087 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1088 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1089 | (Reservado para System.Runtime.InteropServices.JavaScript.JSImportGenerator) |
SYSLIB1090 | Uso de GeneratedComInterfaceAttribute no válido. |
SYSLIB1091 | El método se declara en una declaración parcial diferente al atributo GeneratedComInterface . |
SYSLIB1092 | El uso del atributoLibraryImport o GeneratedComInterface no sigue la recomendación. |
SYSLIB1093 | Error en el análisis de la generación de interfaz COM. |
SYSLIB1094 | La interfaz COM base no ha podido generar el origen. El código no se generará para esta interfaz. |
SYSLIB1095 | Uso de GeneratedComClassAttribute no válido. |
SYSLIB1096 | Use GeneratedComInterfaceAttribute en lugar de ComImportAttribute para generar código de serialización COM en tiempo de compilación. |
SYSLIB1097 | Este tipo implementa al menos un tipo con el atributoGeneratedComInterfaceAttribute . Agregue para habilitar el GeneratedComClassAttribute paso de este tipo a COM y exponer las interfaces COM para los tipos con los GeneratedComInterfaceAttribute objetos de este tipo. |
SYSLIB1098 | El hospedaje COM de .NET con EnableComHosting solo admite la interoperabilidad COM integrada. No admite la interoperabilidad COM generada por el origen con GeneratedComInterfaceAttribute . |
SYSLIB1099 | Las API de interoperabilidad COM en System.Runtime.InteropServices.Marshal no admiten COM generado por el origen y producirán errores en tiempo de ejecución. |
SYSLIB1100 | Generador de enlaces de configuración: no se admite el tipo. |
SYSLIB1101 | Generador de enlaces de configuración: no se admite la propiedad en el tipo. |
SYSLIB1102 | Generador de enlaces de configuración: la versión del lenguaje del proyecto debe ser al menos C# 12. |
SYSLIB1103 | Generador de enlaces de configuración: los tipos de valor son entradas no válidas para los métodos de configuración "Bind". |
SYSLIB1104 | Generador de enlaces de configuración: el generador no puede determinar el tipo de configuración de destino. |
SYSLIB1105 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1106 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration.)(Reserved for Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1107 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1108 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1109 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1110 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1111 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1112 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1113 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1114 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1115 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1116 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1117 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1118 | (Reservado para Microsoft.Extensions.Configuration.Binder.SourceGeneration) |
SYSLIB1201 | No se puede usar ValidateObjectMembersAttribute ni ValidateEnumeratedItemsAttribute en campos o propiedades con tipos genéricos abiertos. |
SYSLIB1202 | Un tipo de miembro no tiene campos ni propiedades para validar. |
SYSLIB1203 | Un tipo no tiene campos ni propiedades para validar. |
SYSLIB1204 | Un tipo anotado con OptionsValidatorAttribute no implementa la interfaz necesaria. |
SYSLIB1205 | Un tipo ya incluye una implementación del método "Validate". |
SYSLIB1206 | No se pueden validar campos o propiedades privados. |
SYSLIB1207 | El tipo de miembro no es enumerable. |
SYSLIB1208 | Los validadores usados para la validación transitiva o enumerable deben tener un constructor sin parámetros. |
SYSLIB1209 | OptionsValidatorAttribute no se puede aplicar a una clase estática. |
SYSLIB1210 | Tipo de validador NULL especificado para los atributos ValidateObjectMembersAttribute o ValidateEnumeratedItemsAttribute . |
SYSLIB1211 | Referencias circulares no admitidas en tipos de modelo. |
SYSLIB1212 | Posiblemente falta la validación transitiva del miembro. |
SYSLIB1213 | Posiblemente falte la validación enumerable del miembro. |
SYSLIB1214 | No se pueden validar constantes, campos estáticos ni propiedades. |
SYSLIB1215 | No se puede acceder al atributo de validación en el miembro del tipo de validador. |
SYSLIB1216 | La versión del lenguaje C# no es compatible con el generador de orígenes de validación de opciones. |
SYSLIB1217 | El atributo de validación solo es aplicable a las propiedades de tipo cadena, matriz o ICollection ; no se puede usar con otros tipos. |
SYSLIB1218 | (Reservado para Microsoft.Extensions.Options.SourceGeneration). |
SYSLIB1219 | (Reservado para Microsoft.Extensions.Options.SourceGeneration). |
SYSLIB1220 | JsonSourceGenerator ha encontrado un [JsonConverterAttribute] con un argumento de tipo no válido. |
SYSLIB1221 | JsonSourceGenerator no admite esta versión del lenguaje C#. |
SYSLIB1222 | El constructor anotado con JsonConstructorAttribute no es accesible. |
SYSLIB1223 | El constructor anotado con JsonConstructorAttribute no es accesible. |
SYSLIB1224 | Los tipos anotados con JsonSerializableAttribute deben ser clases derivadas de JsonSerializerContext. |
SYSLIB1225 | (Reservado para System.Text.Json.SourceGeneration) |
SYSLIB1226 | (Reservado para System.Text.Json.SourceGeneration) |
SYSLIB1227 | (Reservado para System.Text.Json.SourceGeneration) |
SYSLIB1228 | (Reservado para System.Text.Json.SourceGeneration) |
SYSLIB1229 | (Reservado para System.Text.Json.SourceGeneration) |
Suprimir advertencias
Se recomienda usar una de las soluciones alternativas cuando sea posible. Pero, si no puede cambiar el código, puede suprimir la advertencia por medio de una directiva #pragma
o la opción de configuración del proyecto <NoWarn>
. Si el diagnóstico del generador de origen SYSLIB1XXX
no se ve como un error, puede suprimir la advertencia en el código o en el archivo del proyecto.
Para suprimir las advertencias en el código:
// Disable the warning.
#pragma warning disable SYSLIB1006
// Code that generates compiler diagnostic.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB1006
Para suprimir las advertencias en un archivo de proyecto:
<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>