Globales Tool „Microsoft.DotNet.ApiCompat.Tool“
Mit dem Tool „Microsoft.DotNet.ApiCompat.Tool“ können Sie API-Kompatibilitätsprüfungen außerhalb von MSBuild durchführen. Das Tool verfügt über zwei Modi:
- Vergleichen eines Pakets mit einem Basispaket.
- Vergleichen einer Assembly mit einer Basisassembly.
Installieren
Führen Sie den folgenden Befehl aus, um das Tool zu installieren.
dotnet tool install --global Microsoft.DotNet.ApiCompat.Tool
Weitere Informationen zum Installieren globaler Tools finden Sie unter Installieren eines globalen Tools.
Verwendung
Microsoft.DotNet.ApiCompat.Tool [command] [options]
Oder
apicompat [command] [options]
Befehle
package | --package <PACKAGE_FILE>
Überprüft die Kompatibilität von Paketressourcen. Wenn nicht angegeben, vergleicht das Tool Assemblys.
<PACKAGE_FILE>
gibt den Pfad zur Paketdatei an.
Optionen
Einige Optionen gelten sowohl für die Assembly- als auch für die Paketüberprüfung. Andere gelten nur für Assemblys oder nur für Pakete.
Allgemeine Optionen
--version
Zeigt Versionsinformationen an.
--generate-suppression-file
Generiert eine Kompatibilitätsunterdrückungsdatei.
--preserve-unnecessary-suppressions
Behält beim erneuten Generieren der Unterdrückungsdatei unnötige Unterdrückungen bei.
Wenn eine vorhandene Unterdrückungsdatei neu generiert wird, wird der Inhalt gelesen, in eine Reihe von Unterdrückungen deserialisiert und dann in einer Liste gespeichert. Einige der Unterdrückungen sind möglicherweise nicht mehr erforderlich, wenn die Inkompatibilität behoben wurde. Wenn die Unterdrückungen wieder auf dem Datenträger serialisiert werden, können Sie auswählen, dass alle vorhandenen (deserialisierten) Ausdrücke beibehalten werden, indem Sie diese Option angeben.
--permit-unnecessary-suppressions
Erlaubt unnötige Unterdrückungen in der Unterdrückungsdatei.
--suppression-file <FILE>
Gibt den Pfad zu einer oder mehreren Unterdrückungsdateien an, aus der/denen gelesen werden soll.
--suppression-output-file <FILE>
Gibt den Pfad zu einer Unterdrückungsdatei an, in die geschrieben werden soll, wenn
--generate-suppression-file
angegeben ist. Ohne Angabe wird der erste--suppression-file
-Pfad verwendet.--noWarn <NOWARN_STRING>
Gibt die zu unterdrückenden Diagnose-IDs an. Beispielsweise
"$(NoWarn);PKV0001"
.--respect-internals
Überprüft sowohl die
internal
-API als auch diepublic
API.--roslyn-assemblies-path <FILE>
Gibt den Pfad zum Verzeichnis an, das die Microsoft.CodeAnalysis-Assemblys enthält, die Sie verwenden möchten. Sie müssen diese Eigenschaft nur festlegen, wenn Sie zum Testen einen neueren Compiler als den verwenden möchten, der im SDK enthalten ist.
-v, --verbosity [high|low|normal]
Steuert die Ausführlichkeit der Protokollebene. Zulässige Werte sind
high
,normal
undlow
. Der Standardwert istnormal
.--enable-rule-cannot-change-parameter-name
Aktiviert die Regel, die überprüft, ob Parameternamen in öffentlichen Methoden geändert wurden.
--enable-rule-attributes-must-match
Aktiviert die Regel, die überprüft, ob Attribute übereinstimmen.
--exclude-attributes-file <FILE>
Gibt den Pfad zu Dateien an, die auszuschließende Attribute im Format DocId enthalten.
Assemblyspezifische Optionen
Diese Optionen gelten nur, wenn Assemblys verglichen werden.
-l, --left, --left-assembly <PATH>
Gibt den Pfad zu einer oder mehreren Assemblys an, die als linke Seite zum Vergleichen dienen. Diese Option ist beim Vergleichen von Assemblys erforderlich.
-r, --right, --right-assembly <PATH>
Gibt den Pfad zu einer oder mehreren Assemblys an, die als rechte Seite zum Vergleichen dienen. Diese Option ist beim Vergleichen von Assemblys erforderlich.
--strict-mode
Führt API-Kompatibilitätsprüfungen im Strict-Modus aus.
Paketspezifische Optionen
Diese Optionen gelten nur, wenn Pakete verglichen werden.
--baseline-package
Gibt den Pfad zu einem Basispaket an, anhand dessen das aktuelle Paket überprüft werden soll.
--enable-strict-mode-for-compatible-tfms
Überprüft die API-Kompatibilität im Strict-Modus für Vertrags- und Implementierungsassemblys für alle kompatiblen Zielframeworks. Der Standardwert ist
true
.--enable-strict-mode-for-compatible-frameworks-in-package
Überprüft die API-Kompatibilität im Strict-Modus für Assemblys, die basierend auf ihrem Zielframework kompatibel sind.
--enable-strict-mode-for-baseline-validation
Überprüft die API-Kompatibilität im Strict-Modus für Paketbasisüberprüfungen.
--package-assembly-references
Gibt die Pfade für Assemblyverweise oder deren zugrunde liegende Verzeichnisse für ein bestimmtes Zielframework im Paket an. Trennen Sie mehrere Werte durch ein Komma.
--baseline-package-assembly-references
Gibt die Pfade für Assemblyverweise oder deren zugrunde liegende Verzeichnisse für ein bestimmtes Zielframework im Basispaket an. Trennen Sie mehrere Werte durch ein Komma.
--baseline-package-frameworks-to-ignore
Gibt den Satz von Zielframeworks an, die vom Basispaket ignoriert werden sollen. Die Frameworkzeichenfolge muss exakt mit dem Ordnernamen im Basispaket übereinstimmen.
Beispiele
Mit dem folgenden Befehl werden die aktuellen und die Basisversionen einer Assembly verglichen.
apicompat --left bin\Release\net8.0\LibApp5.dll --right bin\Release\net8.0\LibApp5-baseline.dll
Mit dem folgenden Befehl werden die aktuellen und die Basisversionen eines Pakets verglichen.
apicompat package "bin\Release\LibApp5.1.0.0.nupkg" --baseline-package "bin\Release\LibApp5.2.0.0.nupkg"
Das folgende Beispiel zeigt den Befehl zum Vergleichen der aktuellen Versionen und der Basisversionen einer Assembly, einschließlich der Überprüfung auf Änderungen der Parameternamen. Das Beispiel zeigt auch, wie die Ausgabe aussehen könnte, wenn sich ein Parametername geändert hat.
>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.