Partilhar via


Diagnóstico SYSLIB para geração de fontes regex

A tabela seguinte mostra os IDs de diagnóstico para analisadores de geração de código-fonte regex em versões .NET 7 e posteriores. SYSLIB1045 alerta-te automaticamente para locais onde podes usar geração de fonte para gerar a implementação do motor de expressões regulares em tempo de compilação. Os diagnósticos restantes alertam-no para erros relacionados com a utilização do gerador de fonte.

ID de diagnóstico Descrição
SYSLIB1040 Utilização inválida GeneratedRegexAttribute .
SYSLIB1041 Vários GeneratedRegexAttribute atributos foram aplicados ao mesmo método, mas apenas um é permitido.
SYSLIB1042 A expressão regular especificada é inválida.
SYSLIB1043 Um GeneratedRegexAttribute método deve ser parcial, sem parâmetros, não genérico e não abstrato, e retornar Regex.
SYSLIB1044 O gerador de regex não pôde gerar uma implementação de origem completa para a expressão regular especificada devido a uma limitação interna. Veja a explicação na fonte gerada para obter mais detalhes.
SYSLIB1045 Use GeneratedRegexAttribute para gerar a implementação de expressão regular em tempo de compilação.

Para mais informações sobre a geração de fontes para expressões regulares, veja .NET geradores de fontes de expressões regulares.

Ocultar avisos

É recomendável usar uma das soluções alternativas sempre que possível. No entanto, se você não pode alterar seu código, você pode suprimir o aviso por meio de uma #pragma diretiva ou uma <NoWarn> configuração de projeto. Se o diagnóstico do SYSLIB1XXX gerador de código-fonte não aparecer como um erro, você poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir os avisos no código (substituir o ID de diagnóstico conforme necessário):

// Disable the warning.
#pragma warning disable SYSLIB1006

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

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

Para suprimir os avisos num ficheiro de projeto (substituir os IDs de diagnóstico conforme necessário):

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

Consulte também