Compartilhar via


SYSLIB0036: Regex.CompileToAssembly está obsoleto

O método Regex.CompileToAssembly está marcado como obsoleto, começando no .NET 7. Usar essa API no código gerará o aviso SYSLIB0036 em tempo de compilação.

No .NET 5, no .NET 6 e em todas as versões do .NET Core, Regex.CompileToAssembly gera um PlatformNotSupportedException. No .NET Framework, Regex.CompileToAssembly permite que uma instância de expressão regular seja compilada em um assembly.

Solução alternativa

Use o atributo GeneratedRegexAttribute, que invoca um gerador de origem de expressão regular. No tempo de compilação, o gerador de origem produz uma API específica para um padrão de expressão regular e suas opções.

// This attribute causes the regular expression pattern to be compiled into your assembly,
// which enables it to start up and run more quickly.
[GeneratedRegex("abc|def", RegexOptions.IgnoreCase)]
private static partial Regex MyRegex();

// ...

// Use the regular expression
if (MyRegex().IsMatch(text) { ... }

Suprimir um aviso

Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.

// Disable the warning.
#pragma warning disable SYSLIB0036

// Code that uses obsolete API.
// ...

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

Para suprimir todos os avisos SYSLIB0036 no projeto, adicione uma propriedade <NoWarn> ao arquivo de projeto.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0036</NoWarn>
  </PropertyGroup>
</Project>

Para obter mais informações, confira Suprimir avisos.