次の方法で共有


パッケージ/アセンブリ検証エラー コード

このリファレンス記事では、パッケージの検証とアセンブリの検証によって生成されるすべてのエラー コードの一覧を示します。

エラー コードの一覧

診断識別子 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 は、次のいずれかの方法で抑制できます。

抑制ファイル

意図的な変更の互換性エラーを抑制するには、 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>