このリファレンス記事では、パッケージの検証とアセンブリの検証によって生成されるすべてのエラー コードの一覧を示します。
エラー コードの一覧
| 診断識別子 | Description | 推奨されるアクション |
|---|---|---|
| PKV001 | 互換性のあるフレームワークのコンパイル時資産がありません。 | 適切なターゲット フレームワークをプロジェクトに追加します。 |
| PKV002 | 互換性のあるフレームワークおよびランタイムのランタイム資産が不足しています。 | 対応するランタイムの適切な資産をパッケージに追加します。 |
| PKV003 | 互換性のあるフレームワークのランタイム独立資産がありません。 | 適切なランタイム独立ターゲット フレームワークをプロジェクトに追加します。 |
| PKV004 | コンパイル時資産に対応する互換性のあるランタイム資産が欠けています。 | 適切なランタイム資産をパッケージに追加します。 |
| PKV005 | コンパイルタイム資産とサポートされているランタイム識別子に互換性のある実行時資産がありません。 | 適切なランタイム資産をパッケージに追加します。 |
| PKV006 | ターゲット フレームワークは最新バージョンで削除されます。 | 適切なターゲット フレームワークをプロジェクトに追加します。 |
| PKV007 | ターゲット フレームワークとランタイム識別子のペアは、最新バージョンで削除されます。 | 適切なターゲット フレームワークと RID をプロジェクトに追加します。 |
| CP0001 | アセンブリの外部に表示される型、列挙型、レコード、または構造体は、存在する必要がある場合に比較アセンブリに存在しません。 | 不足している型をアセンブリに追加します。 |
| CP0002 | アセンブリの外部に表示されるメンバーは、存在する必要がある場合に比較アセンブリに存在しません。 | 不足しているメンバーを、欠けている場所のアセンブリに追加します。 |
| CP0003 | アセンブリ ID の一部 (名前、公開キー トークン、カルチャ、再ターゲット可能な属性、またはバージョン) が、比較の両側で一致しません。 | 両方の側が一致するようにアセンブリ ID を更新します。 |
| CP0004 | アセンブリ マッピングの作成時に、一致するアセンブリが比較の一方で見つかりませんでした。 | 不足しているアセンブリがパッケージに追加されていることを確認します。 |
| CP0005 |
abstractメンバーが、封印されていない型との比較の右側に追加されました。 |
メンバーを削除するか、 abstractとして注釈を付けないでください。 |
| CP0006 | 既定の実装なしでメンバーがインターフェイスに追加されました。 | ターゲット フレームワークと言語バージョンで既定の実装がサポートされている場合は、1 つ追加するか、インターフェイスからメンバーを削除します。 |
| CP0007 | クラス階層の基本型が、比較された辺の 1 つから削除されました。 | 基本型を追加し直します。 (意図した場合は、新しい基本型を階層内に導入できます)。 |
| CP0008 | 基本インターフェイスは、比較された側の 1 つからインターフェイス階層から削除されました。 | インターフェイスを階層に追加し直します。 |
| CP0009 | 一方の側で封印されていない型は、他方の比較側で sealed として注釈が付けられます。 |
sealed注釈を型から削除します。 |
| CP0010 | 列挙型の基になる型が、一方の側から他方に変更されました。 | 基になる型を以前の型に戻します。 |
| CP0011 | 列挙型内のメンバーの値が、一方の側から他方に変更されました。 | メンバーの値を以前の値に戻します。 |
| CP0012 |
virtualキーワードまたは abstract キーワードが、以前は仮想または抽象だったメンバーから削除されました。 |
メンバーが以前に仮想だった場合は、 virtual キーワードを再度追加します。 メンバーが以前に抽象だった場合は、メンバーに virtual キーワードまたは abstract キーワードを追加します。 |
| CP0013 |
virtual キーワードは、以前は仮想ではないメンバーに追加されました。 |
メンバーから virtual キーワードを削除します。 |
| CP0014 | 属性が以前に持っていたメンバーから削除されました。 | 属性をメンバーに追加し直します。 |
| CP0015 | 属性に渡される引数は、一方の側から他方に変更されました。 | 引数を属性に戻し、以前の値に戻します。 |
| CP0016 | 以前に持っていないメンバーに属性が追加されました。 | メンバーから属性を削除します。 |
| CP0017 | メソッドのパラメーターの名前が一方から他方に変更されました。 | パラメーターの名前を以前の名前に戻します。 |
| CP0018 |
sealed キーワードは、以前はシールされていないインターフェイス メンバーに追加されました。 |
インターフェイス メンバーから sealed キーワードを削除します。 |
| CP0019 | メンバーの可視性が一方の側から他方に縮小されました。 | メンバーの可視性を以前の状態に戻します。 |
| CP0020 | メンバーの可視性が一方の側から他方に拡張されました。 | メンバーの可視性を以前の状態に戻します。 |
| CP1001 | 検索ディレクトリに一致するアセンブリが見つかりませんでした。 (API 互換性を直接使用する場合にのみ、パッケージの検証には適用されません)。 |
AssemblySymbolLoaderを使用して一致するアセンブリを読み込むときに検索ディレクトリを指定します。 |
| CP1002 | 現在のターゲット フレームワークの解決されたディレクトリで比較するアセンブリを読み込むときに参照アセンブリが見つかりませんでした。 | 次の MSBuild 項目を使用して、そのアセンブリが見つかるディレクトリ パスを含めます: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />。 |
| CP1003 | パッケージ検証で API 互換性が実行されているターゲット フレームワーク モニカーの検索ディレクトリが提供されませんでした。 | 次の MSBuild 項目を使用して、そのターゲット フレームワークの参照を検索する検索ディレクトリを指定します: <PackageValidationReferencePath Include="<path>" TargetFramework="<tfm>" />。 |
抑制する方法
個々の診断 ID は、次のいずれかの方法で抑制できます。
- 抑制ファイルを使用します。
-
NoWarnコンパイラ フラグを使用します。
抑制ファイル
意図的な変更の互換性エラーを抑制するには、 CompatibilitySuppressions.xml ファイルをプロジェクトに追加します。 パッケージの検証とアセンブリの検証では、同じ抑制ファイル形式が使用されます。
このファイルは、次の 2 つの方法のいずれかで自動的に生成できます。
- コマンド ラインからプロジェクトをパッキングする場合は、
/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 にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET