Microsoft.DotNet.ApiCompat.Tool ツールを使用すると、MSBuild の外部で API 互換性チェックを実行できます。 このツールには、次の 2 つのモードがあります。
- パッケージをベースライン パッケージと比較します。
- アセンブリとベースライン アセンブリを比較します。
取り付ける
ツールをインストールするには、次のコマンドを実行します。
dotnet tool install --global Microsoft.DotNet.ApiCompat.Tool
グローバル ツールのインストールの詳細については、「 グローバル ツールのインストール」を参照してください。
使用方法
Microsoft.DotNet.ApiCompat.Tool [command] [options]
-又は-
apicompat [command] [options]
コマンド
package | --package <PACKAGE_FILE>
パッケージ資産の互換性を検証します。 指定しない場合、ツールはアセンブリを比較します。
<PACKAGE_FILE>
は、パッケージ ファイルへのパスを指定します。
オプション
一部のオプションは、アセンブリとパッケージの検証の両方に適用されます。 他のユーザーは アセンブリにのみ 適用されるか 、パッケージにのみ適用されます。
全般オプション
--version
バージョン情報を表示します。
--generate-suppression-file
互換性抑制ファイルを生成します。
--preserve-unnecessary-suppressions
抑制ファイルを再生成するときに不要な抑制を保持します。
既存の抑制ファイルが再生成されるときは、その内容が読み取られ、一連の抑制に逆シリアル化された後、リストに格納されます。 非互換性が修正されている場合、一部の抑制は不要になる可能性があります。 抑制をディスクにシリアル化し直す場合は、このオプションを指定して、 既存の (逆シリアル化された) 式をすべて保持することを選択できます。
--permit-unnecessary-suppressions
抑制ファイル内の不要な抑制を許可します。
--suppression-file <FILE>
読み取る 1 つ以上の抑制ファイルへのパスを指定します。
--suppression-output-file <FILE>
--generate-suppression-file
が指定されたときに書き込む抑制ファイルへのパスを指定します。 指定しない場合は、最初の--suppression-file
パスが使用されます。--noWarn <NOWARN_STRING>
抑制する診断 ID を指定します。 たとえば、
"$(NoWarn);PKV0001"
のようにします。--respect-internals
internal
API とpublic
API の両方を確認します。--roslyn-assemblies-path <FILE>
使用する Microsoft.CodeAnalysis アセンブリを含むディレクトリへのパスを指定します。 このプロパティを設定する必要があるのは、SDK のコンパイラより新しいコンパイラでテストする場合のみです。
-v, --verbosity [high|low|normal]
ログ レベルの詳細度を制御します。 許容値は、
high
、normal
、およびlow
です。 既定値はnormal
です。--enable-rule-cannot-change-parameter-name
パブリック メソッドでパラメーター名が変更されたかどうかを確認するルールを有効にします。
--enable-rule-attributes-must-match
属性が一致するかどうかを確認するルールを有効にします。
--exclude-attributes-file <FILE>
DocId 形式で除外する属性を含む 1 つ以上のファイルへのパスを指定します。
アセンブリ固有のオプション
これらのオプションは、アセンブリを比較する場合にのみ適用されます。
-l, --left, --left-assembly <PATH>
比較する 左側 として機能する 1 つ以上のアセンブリへのパスを指定します。 このオプションは、アセンブリを比較するときに必要です。
-r, --right, --right-assembly <PATH>
比較する 右側 として機能する 1 つ以上のアセンブリへのパスを指定します。 このオプションは、アセンブリを比較するときに必要です。
--strict-mode
厳密モードで API 互換性チェックを実行します。
パッケージ固有のオプション
これらのオプションは、パッケージを比較する場合にのみ適用されます。
--baseline-package
現在のパッケージを検証する基準パッケージへのパスを指定します。
--enable-strict-mode-for-compatible-tfms
互換性のあるすべてのターゲット フレームワークのコントラクト アセンブリと実装アセンブリの 厳密モード で API 互換性を検証します。 既定値は
true
です。--enable-strict-mode-for-compatible-frameworks-in-package
ターゲット フレームワークに基づいて互換性のあるアセンブリの 厳密モード で API の互換性を検証します。
--enable-strict-mode-for-baseline-validation
パッケージ ベースライン チェックの 厳密モード で API の互換性を検証します。
--package-assembly-references
パッケージ内の特定のターゲット フレームワークのアセンブリ参照またはその基になるディレクトリへのパスを指定します。 複数の値をコンマで区切ります。
--baseline-package-assembly-references
ベースライン パッケージ内の特定のターゲット フレームワークのアセンブリ参照またはその基になるディレクトリへのパスを指定します。 複数の値をコンマで区切ります。
--baseline-package-frameworks-to-ignore
ベースライン パッケージから無視するターゲット フレームワークのセットを指定します。 フレームワーク文字列は、ベースライン パッケージ内のフォルダー名と正確に一致する必要があります。
例示
次のコマンドは、アセンブリの現在のバージョンと基準バージョンを比較します。
apicompat --left bin\Release\net8.0\LibApp5.dll --right bin\Release\net8.0\LibApp5-baseline.dll
次のコマンドは、パッケージの現在のバージョンとベースラインバージョンを比較します。
apicompat package "bin\Release\LibApp5.1.0.0.nupkg" --baseline-package "bin\Release\LibApp5.2.0.0.nupkg"
次の例は、パラメーター名の変更のチェックなど、アセンブリの現在のバージョンと基準バージョンを比較するコマンドを示しています。 この例では、パラメーター名が変更された場合の出力の外観も示しています。
>apicompat -l LibApp5-baseline.dll -r LibApp5.dll --enable-rule-cannot-change-parameter-name
API compatibility errors between 'LibApp5-baseline.dll' (left) and 'LibApp5.dll' (right):
CP0017: Parameter name on member 'KitchenHelpers.ToastBreadAsync(int, int)'
changed from 'slices' to 'numSlices'.
API breaking changes found. If those are intentional, the APICompat
suppression file can be updated by specifying the '--generate-suppression-file' parameter.
.NET