다음을 통해 공유


SYSLIB0036: Regex.CompileToAssembly는 사용되지 않습니다.

Regex.CompileToAssembly 메서드는 .NET 7부터 사용되지 않는 것으로 표시됩니다. 코드에서 이 API를 사용하면 컴파일 시간에 SYSLIB0036 경고가 생성됩니다.

.NET 5, .NET 6, 모든 버전의 .NET Core에서는 Regex.CompileToAssemblyPlatformNotSupportedException을 throw합니다. .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>

자세한 내용은 경고 표시 안 함을 참조하세요.