SYSLIB0036: Regex.CompileToAssembly ist veraltet

Die Methode Regex.CompileToAssembly ist ab .NET 7 als veraltet markiert. Wenn diese API im Code verwendet wird, wird zur Kompilierzeit die Warnung SYSLIB0036 erzeugt.

In .NET 5, .NET 6 und allen Versionen von .NET Core löst Regex.CompileToAssembly eine PlatformNotSupportedException-Ausnahme aus. Im .NET Framework lässt Regex.CompileToAssembly zu, dass eine Instanz eines regulären Ausdrucks in eine Assembly kompiliert wird.

Problemumgehung

Verwenden Sie das Attribut GeneratedRegexAttribute, das einen Quellengenerator für reguläre Ausdrücke (Regular Expression, RegEx) aufruft. Zur Kompilierzeit erzeugt der Quellen-Generator eine API für ein bestimmtes RegEx-Muster und seine Optionen.

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

Unterdrücken einer Warnung

Wenn Sie die veralteten APIs verwenden müssen, können Sie die Warnung im Code oder in Ihrer Projektdatei unterdrücken.

Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Um alle SYSLIB0036-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>-Eigenschaft hinzu.

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

Weitere Informationen finden Sie unter Unterdrücken von Warnungen.