Partilhar via


SYSLIB0036: Regex.CompileToAssembly está obsoleto

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

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

Solução

Use o GeneratedRegexAttribute atributo, que invoca um gerador de fonte de expressão regular. Em tempo de compilação, o gerador de código-fonte 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 você precisar usar as APIs obsoletas, poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar 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 SYSLIB0036 avisos em seu projeto, adicione uma <NoWarn> propriedade ao seu arquivo de projeto.

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

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