Compartilhar via


Diagnósticos SYSLIB para geração de fonte regex

A tabela a seguir mostra as IDs de diagnóstico para analisadores de geração de código fonte do regex nas versões .NET 7 e posteriores. SYSLIB1045 alerta automaticamente para locais onde você pode usar a geração de código para criar a implementação do mecanismo de expressão regular durante a compilação. O diagnóstico restante alerta para erros relacionados ao uso do gerador de origem.

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

Para obter mais informações sobre a geração de origem para expressões regulares, consulte .NET geradores de origem de expressão regular.

Suprimir avisos

É recomendável que você use uma das soluções alternativas quando possível. No entanto, se você não puder alterar seu código, poderá suprimir o aviso por meio de uma #pragma diretiva ou uma <NoWarn> configuração de projeto. Se o diagnóstico do gerador de origem SYSLIB1XXX 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 (substitua a 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 em um arquivo de projeto (substitua as 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