共用方式為


SYSLIB0036:Regex.CompileToAssembly 已過時

從 .NET 7 開始,Regex.CompileToAssembly 方法會標示為已淘汰。 在程式碼中使用此 API,會在編譯時產生警告 SYSLIB0036

在 .NET 5、.NET 6 及 .NET Core 的所有版本中,Regex.CompileToAssembly 會擲回 PlatformNotSupportedException。 在 .NET Framework 中,Regex.CompileToAssembly 允許規則運算式執行個體編譯成組件。

因應措施

使用 GeneratedRegexAttribute 屬性可叫用規則運算式來源產生器。 在編譯時間,來源產生器會產生規則運算式模式及其選項專用的 API。

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

隱藏警告

若您必須使用已淘汰的 API,您可以在程式碼或專案檔中隱藏警告。

若要只隱藏單一違規,請將前置處理器指示詞新增至原始程式碼檔案,以停用並重新啟用警告。

// Disable the warning.
#pragma warning disable SYSLIB0036

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

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

若要隱藏專案中的所有 SYSLIB0036 警告,請將 <NoWarn> 屬性新增至專案檔。

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

如需詳細資訊,請參閱隱藏警告