Compartir a través de


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>