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.