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.