다음을 통해 공유


CA2252: 미리 보기 기능을 사용하기 전에 옵트인

속성
규칙 ID CA2252
타이틀 기능을 사용하기 전에 미리 보기로 옵트인
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 오류로

원인

클라이언트가 로컬로 또는 모듈 또는 어셈블리 수준에서 명시적으로 옵트인하지 않고 어셈블리에서 미리 보기 API 또는 형식을 사용합니다.

규칙 설명

RequiresPreviewFeaturesAttribute 특성으로 데코레이트된 API 또는 어셈블리를 사용하는 경우 이 규칙은 호출 사이트에서 미리 보기 기능을 옵트인했는지 여부를 확인합니다. 다음 중 하나가 적용되는 경우 호출 사이트에서 미리 보기 기능을 옵트인한 것입니다.

  • RequiresPreviewFeaturesAttribute 주석 범위 내에 있습니다.
  • 미리 보기 기능을 이미 옵트인한 어셈블리 또는 모듈의 일부입니다.

다음 이미지에서는 CA2252 진단의 예를 보여 줍니다.

Code editor with CA2252 warning.

여기서 LibMain 메서드에서 생성되는 미리 보기 유형입니다. Main 자체는 미리 보기 메서드로 주석이 추가되지 않으므로 진단은 Main 내에서 두 개의 생성자 호출에 생성됩니다.

위반 문제를 해결하는 방법

위반을 해결하는 방법에는 두 가지가 있습니다.

  • 부모에 RequiresPreviewFeaturesAttribute 주석을 추가하여 호출 사이트를 주석 범위 내로 가져옵니다. 이전 예제에서 APreviewMethodRequiresPreviewFeatures 특성이 주석으로 추가되었으므로 분석기는 APreviewMethod 내부의 미리 보기 유형 사용을 무시합니다. 따라서 APreviewMethod의 호출자가 유사한 실행을 수행해야 합니다.

  • 어셈블리 또는 모듈 수준에서 미리 보기 기능을 옵트인할 수도 있습니다. 이는 분석기에게 어셈블리에서 미리 보기 유형 사용이 필요함을 나타내며, 결과적으로 이 규칙에 따라 오류가 생성되지 않습니다. 미리 보기 종속성을 사용하는 기본 방법입니다. 전체 어셈블리 내에서 미리 보기 기능을 사용하도록 설정하려면 .csproj 파일에서 EnablePreviewFeatures 속성을 설정합니다.

  <PropertyGroup>
    <EnablePreviewFeatures>true</EnablePreviewFeatures>
  </PropertyGroup>

경고를 표시하지 않는 경우

이 규칙에서 경고를 표시하지 않는 것은 API에 대한 진단 명시적으로 사용하지 않도록 설정해야 하는 고급 사용 사례에만 권장됩니다. 이 경우 미리 보기 API를 적절하게 표시해야 합니다. 예를 들어 기존 형식이 새 미리 보기 인터페이스를 구현하는 경우를 가정해 보겠습니다. 전체 형식을 미리 보기로 표시할 수 없기 때문에(이전 버전과의 호환성을 위해) 형식 정의에 대한 진단을 로컬에서 비활성화할 수 있습니다. 또한 미리 보기 인터페이스 구현을 미리 보기로 표시해야 합니다. 이제 기존 형식을 이전처럼 사용할 수 있지만 새 인터페이스 메서드를 호출하면 진단을 받게 됩니다. System.Private.CoreLib.csproj는 이 기술을 사용하여 Int32, Double, Decimal과 같은 숫자 형식에 일반적인 수학 기능을 노출합니다.

다음 이미지에서는 로컬에서 CA2252 분석기를 사용하지 않도록 설정하는 방법을 보여 줍니다.

CA2252 - Suppress Detect Preview Feature Diagnostic

CA2252 - Mark Interface Implementations Explicitly

참고 항목

다음이 모두 적용되는 경우 이 규칙에서 가양성 경고가 표시될 수 있습니다.

  • Visual Studio 2022 버전 17.5 이상을 이전 버전의 .NET SDK(.NET 6 이하)와 함께 사용하고 있습니다.
  • .NET 6 SDK 분석기 또는 이전 버전의 분석기 패키지(예: Microsoft.CodeAnalysis.FxCopAnalyzers)를 사용하고 있습니다.

이 경우 가양성 경고가 표시되지 않도록 하는 것이 안전합니다. 가양성은 C# 컴파일러의 호환성이 손상되는 변경으로 인해 발생합니다. 가양성 경고에 대한 수정 사항이 포함된 최신 분석기를 사용하는 것이 좋습니다. Microsoft.CodeAnalysis.NetAnalyzers 버전 7.0.0-preview1.22464.1 이상으로 업그레이드하거나 .NET 7 SDK에서 분석기를 사용하세요.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#pragma warning disable CA2252
// The code that's violating the rule is on this line.
#pragma warning restore CA2252

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.CA2252.severity = none

이 전체 규칙 범주를 사용하지 않도록 설정하려면 구성 파일에서 범주의 심각도를 none으로 설정합니다.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목