Delen via


SYSLIB0036: Regex.CompileToAssembly is verouderd

De Regex.CompileToAssembly methode is gemarkeerd als verouderd, te beginnen in .NET 7. Als u deze API in code gebruikt, wordt er een waarschuwing SYSLIB0036 gegenereerd tijdens het compileren.

In .NET 5, .NET 6 en alle versies van .NET Core Regex.CompileToAssembly wordt een PlatformNotSupportedException. In .NET Framework Regex.CompileToAssembly kan een exemplaar van een reguliere expressie worden gecompileerd in een assembly.

Tijdelijke oplossing

Gebruik het GeneratedRegexAttribute kenmerk dat een brongenerator voor reguliere expressies aanroept. Tijdens het compileren produceert de brongenerator een API die specifiek is voor een normaal expressiepatroon en de bijbehorende opties.

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

Een waarschuwing onderdrukken

Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Als u alle SYSLIB0036 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

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

Zie Waarschuwingen onderdrukken voor meer informatie.