Aracılığıyla paylaş


SYSLIB0036: Regex.CompileToAssembly kullanımdan kaldırıldı

Regex.CompileToAssembly yöntemi ,NET 7'den başlayarak eski olarak işaretlenir. Bu API'nin kodda kullanılması derleme zamanında uyarı SYSLIB0036 oluşturur.

.NET 5, .NET 6 ve .NET Core'un Regex.CompileToAssembly tüm sürümlerinde bir PlatformNotSupportedExceptionoluşturur. .NET Framework'te, Regex.CompileToAssembly normal ifade örneğinin bir derlemede derlenmiş olmasına izin verir.

Geçici çözüm

GeneratedRegexAttribute Normal ifade kaynak oluşturucuyu çağıran özniteliğini kullanın. Derleme zamanında, kaynak oluşturucu normal ifade desenine ve seçeneklerine özgü bir API üretir.

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

Uyarıyı gizleme

Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.

Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Projenizdeki tüm SYSLIB0036 uyarıları engellemek için proje dosyanıza bir <NoWarn> özellik ekleyin.

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

Daha fazla bilgi için bkz . Uyarıları gizleme.