Compartir a través de


SYSLIB0036: Regex.CompileToAssembly está obsoleto

El método Regex.CompileToAssembly está marcado como obsoleto a partir de .NET 7. El empleo de esta API en el código genera una advertencia SYSLIB0036 en tiempo de compilación.

En .NET 5, .NET 6 y todas las versiones de .NET Core, Regex.CompileToAssembly produce PlatformNotSupportedException. En .NET Framework, Regex.CompileToAssembly permite compilar una instancia de expresión regular en un ensamblado.

Solución alternativa

Use la característica GeneratedRegexAttribute, que invoca un generador de código fuente de expresiones regulares. En tiempo de compilación, el generador de origen genera una API específica de un patrón de expresión regular y sus opciones.

// 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) { ... }

Supresión de una advertencia

Si tiene que seguir usando las API obsoletas, puede suprimir la advertencia en el código o en el archivo de proyecto.

Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y luego volver a habilitar la advertencia.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Para suprimir todas las advertencias SYSLIB0036 del proyecto, agregue una propiedad <NoWarn> al archivo del proyecto.

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

Para obtener más información, vea Suprimir advertencias.