Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 Sie ein Paket mit einem Basispaket.
- Vergleichen Sie eine Baugruppe mit einer Referenzbaugruppe.
Installieren
Führen Sie zum Installieren des Tools den folgenden Befehl aus.
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 den 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 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. Wenn nicht angegeben, wird der erste--suppression-file
Pfad verwendet.--noWarn <NOWARN_STRING>
Gibt die zu unterdrückenden Diagnose-IDs an. Beispiel:
"$(NoWarn);PKV0001"
.--respect-internals
Überprüft sowohl
internal
als auchpublic
APIs.--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 lautetnormal
.--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 einer oder mehreren Dateien an, die Attribute enthalten, die im DocId-Format ausgeschlossen werden sollen.
Assemblyspezifische Optionen
Diese Optionen gelten nur, wenn Zusammenstellungen 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 strikten Modus aus.
Paketspezifische Optionen
Diese Optionen gelten nur, wenn Pakete verglichen werden.
--baseline-package
Gibt den Pfad zu einem Basispaket an, mit dem das aktuelle Paket überprüft werden soll.
--enable-strict-mode-for-compatible-tfms
Überprüft die API-Kompatibilität im strikten Modus für Vertrags- und Implementierungsassemblys für alle kompatiblen Zielframeworks. Der Standardwert lautet
true
.--enable-strict-mode-for-compatible-frameworks-in-package
Überprüft die API-Kompatibilität im strikten Modus für Assemblys, die basierend auf ihrem Zielframework kompatibel sind.
--enable-strict-mode-for-baseline-validation
Überprüft die API-Kompatibilität im strikten Modus für Paketbasisplanü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 zu Assemblyverweisen oder deren zugrunde liegenden Verzeichnissen für ein bestimmtes Ziel-Framework 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
Der folgende Befehl vergleicht die aktuellen und Basislinienversionen einer Assembly.
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 Basislinienversionen 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 und Basislinienversionen einer Assembly, einschließlich der Überprüfung auf Parameternamenänderungen. 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.