パッケージ/アセンブリ検証エラー コード
このリファレンス記事では、パッケージの検証とアセンブリの検証によって生成されるすべてのエラー コードのリストを示します。
エラー コードの一覧
診断 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 ではなかったインターフェイス メンバーに追加されました。 |
インターフェイス メンバーから 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