패키지/어셈블리 유효성 검사 오류 코드
이 참조 문서에는 패키지 유효성 검사 및 어셈블리 유효성 검사에서 생성된 모든 오류 코드가 나열되어 있습니다.
오류 코드 목록
진단 ID | 설명 | 권장 작업 |
---|---|---|
PKV001 | 호환되는 프레임워크의 컴파일 시간 자산이 없습니다. | 프로젝트에 적절한 대상 프레임워크를 추가합니다. |
PKV002 | 호환되는 프레임워크 및 런타임의 런타임 자산이 없습니다. | 패키지에 해당 런타임에 적합한 자산을 추가합니다. |
PKV003 | 호환되는 프레임워크의 런타임 독립 자산이 없습니다. | 프로젝트에 적절한 런타임 독립 대상 프레임워크를 추가합니다. |
PKV004 | 컴파일 시간 자산의 호환되는 런타임 자산이 없습니다. | 패키지에 적절한 런타임 자산을 추가합니다. |
PKV005 | 컴파일 시간 자산 및 지원되는 런타임 식별자의 호환되는 런타임 자산이 없습니다. | 패키지에 적절한 런타임 자산을 추가합니다. |
PKV006 | 최신 버전에서 대상 프레임워크가 제거되었습니다. | 프로젝트에 적절한 대상 프레임워크를 추가합니다. |
PKV007 | 최신 버전에서 대상 프레임워크 및 런타임 식별자 쌍이 제거되었습니다. | 프로젝트에 적절한 대상 프레임워크 및 RID를 추가합니다. |
CP0001 | 비교 대상 어셈블리의 필요한 곳에 어셈블리 바깥에서 볼 수 있는 형식, 열거형, 레코드 또는 구조체가 없습니다. | 어셈블리의 누락된 곳에 누락된 형식을 추가합니다. |
CP0002 | 비교 대상 어셈블리의 필요한 곳에 어셈블리 바깥에서 볼 수 있는 멤버가 없습니다. | 어셈블리의 누락된 곳에 누락된 멤버를 추가합니다. |
CP0003 | 어셈블리 ID의 일부분(이름, 퍼블릭 키 토큰, 문화권, 대상 다시 지정 가능 특성 또는 버전)이 양쪽 비교에서 일치하지 않습니다. | 양쪽이 일치할 수 있도록 어셈블리 ID를 업데이트합니다. |
CP0004 | 어셈블리 매핑을 만들 때 비교의 한쪽에서 일치하는 어셈블리를 찾지 못했습니다. | 누락된 어셈블리가 패키지에 추가되었는지 확인합니다. |
CP0005 | abstract 멤버가 봉인되지 않은 형식에 대한 비교의 오른쪽에 추가되었습니다. |
멤버를 제거하거나 abstract 같이 주석을 달지 않습니다. |
CP0006 | 인터페이스에 멤버가 기본 구현 없이 추가되었습니다. | 대상 프레임워크 및 언어 버전이 기본 구현을 지원하는 경우 기본 구현을 추가하거나, 인터페이스에서 멤버를 제거합니다. |
CP0007 | 비교의 한쪽에서 클래스 계층 구조의 기본 형식이 제거되었습니다. | 기본 형식을 다시 추가합니다. (의도한 경우 계층 구조에 새 기본 형식을 도입할 수 있습니다.) |
CP0008 | 비교의 한쪽에서 인터페이스 계층 구조에서 기본 인터페이스가 제거되었습니다. | 계층 구조에 인터페이스를 다시 추가합니다. |
CP0009 | 한쪽에 봉인되지 않은 형식은 다른 쪽에서는 sealed 같이 주석으로 추가되었습니다. |
형식에서 sealed 주석을 제거합니다. |
CP0010 | 열거형의 기본 형식이 한 쪽에서 다른 쪽으로 변경되었습니다. | 기본 형식을 이전 형식으로 다시 변경합니다. |
CP0011 | 열거형의 멤버 값이 한 쪽에서 다른 쪽으로 변경되었습니다. | 멤버의 값을 이전의 값으로 다시 변경합니다. |
CP0012 | virtual 키워드가 이전에 가상이었던 멤버에서 제거되었습니다. |
virtual 키워드를 멤버에 다시 추가합니다. |
CP0013 | virtual 키워드가 이전에 가상이 아닌 멤버에 추가되었습니다. |
멤버에서 virtual 키워드를 제거합니다. |
CP0014 | 특성이 이전에 있던 멤버에서 제거되었습니다. | 특성을 멤버에 다시 추가합니다. |
CP0015 | 특성에 전달된 인수가 한 쪽에서 다른 쪽으로 변경되었습니다. | 인수를 특성으로 다시 이전의 인수로 변경합니다. |
CP0016 | 특성이 이전에 없는 멤버에 추가되었습니다. | 멤버에서 특성을 제거합니다. |
CP0017 | 메서드 매개 변수의 이름이 한 쪽에서 다른 쪽으로 변경되었습니다. | 매개 변수의 이름을 이전의 이름으로 다시 변경합니다. |
CP0018 | sealed 키워드는 이전에 봉인되지 않은 인터페이스 멤버에 추가되었습니다. |
인터페이스 멤버에서 sealed 키워드를 제거합니다. |
CP0019 | 멤버의 가시성이 한 쪽에서 다른 쪽으로 감소했습니다. | 멤버의 가시성을 이전으로 다시 변경합니다. |
CP0020 | 멤버의 가시성이 한 쪽에서 다른 쪽으로 확장되었습니다. | 멤버의 가시성을 이전으로 다시 변경합니다. |
CP1001 | 검색 디렉터리에서 일치하는 어셈블리를 찾지 못했습니다. (API Compat를 직접 사용하는 경우에만 패키지 유효성 검사에 적용되지 않습니다.) | AssemblySymbolLoader (을)를 사용하여 일치하는 어셈블리를 로드할 때 검색 디렉터리를 제공합니다. |
CP1002 | 비교할 어셈블리를 로드할 때 현재 대상 프레임워크의 확인된 디렉터리에서 참조 어셈블리를 찾지 못했습니다. | MSBuild 항목 <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> 을 사용하여 이 어셈블리를 찾을 수 있는 디렉터리 경로를 포함합니다. |
CP1003 | 패키지 유효성 검사가 API 호환성을 실행하는 대상 프레임워크 모니커에 대해 제공된 검색 디렉터리가 없습니다. | MSBuild 항목 <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" /> 을 사용하여 해당 대상 프레임워크의 참조를 찾을 검색 디렉터리를 제공합니다. |
표시 안하는 방법
다음 방법 중 하나에서 개별 진단 ID를 표시하지 않을 수 있습니다.
- 표시 안 함 파일을 통해.
NoWarn
컴파일러 플래그를 통해.
표시 안 함 파일
의도적인 변경 내용에 대한 호환성 오류를 표시하지 않으려면 프로젝트에 CompatibilitySuppressions.xml 파일을 추가합니다. 패키지 유효성 검사 및 어셈블리 유효성 검사는 동일한 제거 파일 형식을 사용합니다.
다음 두 가지 방법 중 하나로 이 파일을 자동으로 생성할 수 있습니다.
- 명령줄에서 프로젝트를 압축하는 경우
/p:GenerateCompatibilitySuppressionFile=true
(을)를 전달합니다. - 프로젝트 파일에 다음 속성을 추가합니다:
<GenerateCompatibilitySuppressionFile>true</GenerateCompatibilitySuppressionFile>
.
비표시 파일은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:A.B.DoStringManipulation(System.String)</Target>
<Left>lib/netstandard2.0/A.dll</Left>
<Right>lib/net6.0/A.dll</Right>
<IsBaselineSuppression>false</IsBaselineSuppression>
</Suppression>
</Suppressions>
DiagnosticId
는 표시하지 않을 오류의 ID를 지정합니다.Target
(은)는 코드에서 진단 ID를 표시하지 않는 위치를 지정합니다.Left
는 APICompat 비교의 왼쪽 피연산자를 지정합니다.Right
는 APICompat 비교의 오른쪽 피연산자를 지정합니다.IsBaselineSuppression
(은)는 기준 유효성 검사(true
)에 표시 안 함(false
)을 적용할지 여부를 지정합니다.
NoWarn 컴파일러 옵션
패키지당 또는 전역적으로 NoWarn
컴파일러 플래그를 통해 개별 진단 ID를 표시하지 않을 수도 있습니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<!-- The following NoWarn suppresses PKV001 project-wide -->
<NoWarn>$(NoWarn);PKV001</NoWarn>
</PropertyGroup>
</Project>
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET