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>
如需詳細資訊,請參閱隱藏警告。