Dela via


SYSLIB0036: Regex.CompileToAssembly är föråldrad

Metoden Regex.CompileToAssembly är markerad som föråldrad med början i .NET 7. Om du använder det här API:et i koden genereras en varning SYSLIB0036 vid kompileringstillfället.

I .NET 5, .NET 6 och alla versioner av .NET Core Regex.CompileToAssembly genererar en PlatformNotSupportedException. I .NET Framework Regex.CompileToAssembly gör det möjligt att kompilera en instans av reguljära uttryck till en sammansättning.

Lösning

GeneratedRegexAttribute Använd attributet som anropar en källgenerator för reguljära uttryck. Vid kompileringstillfället skapar källgeneratorn ett API som är specifikt för ett mönster för reguljära uttryck och dess alternativ.

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

Ignorera en varning

Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Om du vill ignorera alla SYSLIB0036 varningar i projektet lägger du till en <NoWarn> egenskap i projektfilen.

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

Mer information finns i Utelämna varningar.