Bagikan melalui


SYSLIB0036: Regex.CompileToAssembly sudah kedaluwarsa

Metode Regex.CompileToAssembly ini ditandai sebagai usang, mulai dari .NET 7. Menggunakan API ini dalam kode menghasilkan peringatan SYSLIB0036 pada waktu kompilasi.

Di .NET 5, .NET 6, dan semua versi .NET Core, Regex.CompileToAssembly melempar PlatformNotSupportedException. Dalam .NET Framework, Regex.CompileToAssembly memungkinkan instans ekspresi reguler dikompilasi ke dalam rakitan.

Solusi Sementara

GeneratedRegexAttribute Gunakan atribut , yang memanggil generator sumber ekspresi reguler. Pada waktu kompilasi, generator sumber menghasilkan API khusus untuk pola ekspresi reguler dan opsinya.

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

Menyembunyikan peringatan

Jika Anda harus menggunakan API usang, Anda dapat menekan peringatan dalam kode atau dalam file proyek Anda.

Untuk menekan hanya satu pelanggaran, tambahkan direktif praprosedur ke file sumber Anda untuk menonaktifkan lalu mengaktifkan kembali peringatan.

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

Untuk menekan semua SYSLIB0036 peringatan dalam proyek Anda, tambahkan <NoWarn> properti ke file proyek Anda.

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

Untuk informasi selengkapnya, lihat Menyembunyikan peringatan.