Microsoft.DotNet.ApiCompat.Tool global tool
Met het hulpprogramma Microsoft.DotNet.ApiCompat.Tool kunt u API-compatibiliteitscontroles uitvoeren buiten MSBuild. Het hulpprogramma heeft twee modi:
- Vergelijk een pakket met een basislijnpakket.
- Vergelijk een assembly met een basislijnassembly.
Installeren
Voer de volgende opdracht uit om het hulpprogramma te installeren.
dotnet tool install --global Microsoft.DotNet.ApiCompat.Tool
Zie Een algemeen hulpprogramma installeren voor meer informatie over het installeren van globale hulpprogramma's.
Gebruik
Microsoft.DotNet.ApiCompat.Tool [command] [options]
– of –
apicompat [command] [options]
Opdracht
package | --package <PACKAGE_FILE>
Valideert de compatibiliteit van pakketassets. Als dit niet is opgegeven, vergelijkt het hulpprogramma assembly's.
<PACKAGE_FILE>
hiermee geeft u het pad naar het pakketbestand.
Opties
Sommige opties zijn van toepassing op zowel assembly- als pakketvalidatie. Andere zijn alleen van toepassing op assembly's of alleen pakketten.
Algemene opties
--version
Geeft versiegegevens weer.
--generate-suppression-file
Hiermee wordt een compatibiliteitsonderdrukkingsbestand gegenereerd.
--preserve-unnecessary-suppressions
Bewaart onnodige onderdrukkingen bij het regenereren van het onderdrukkingsbestand.
Wanneer een bestaand onderdrukkingsbestand opnieuw wordt gegenereerd, wordt de inhoud ervan gelezen, gedeserialiseerd in een set onderdrukkingen en vervolgens opgeslagen in een lijst. Sommige onderdrukkingen zijn mogelijk niet meer nodig als de incompatibiliteit is opgelost. Wanneer de onderdrukkingen terug naar schijf worden geserialiseerd, kunt u ervoor kiezen om alle bestaande (gedeserialiseerde) expressies te behouden door deze optie op te geven.
--permit-unnecessary-suppressions
Maakt onnodige onderdrukkingen in het onderdrukkingsbestand mogelijk.
--suppression-file <FILE>
Hiermee geeft u het pad naar een of meer onderdrukkingsbestanden waaruit moet worden gelezen.
--suppression-output-file <FILE>
Hiermee geeft u het pad naar een onderdrukkingsbestand om naar te schrijven wanneer
--generate-suppression-file
is opgegeven. Als dit niet is opgegeven, wordt het eerste--suppression-file
pad gebruikt.--noWarn <NOWARN_STRING>
Hiermee geeft u de diagnostische id's die moeten worden onderdrukt. Bijvoorbeeld
"$(NoWarn);PKV0001"
.--respect-internals
Controleert zowel
internal
public
als API's.--roslyn-assemblies-path <FILE>
Hiermee geeft u het pad naar de map die de Microsoft.CodeAnalysis-assembly's bevat die u wilt gebruiken. U hoeft deze eigenschap alleen in te stellen als u wilt testen met een nieuwere compiler dan wat zich in de SDK bevindt.
-v, --verbosity [high|low|normal]
Hiermee bepaalt u de uitgebreidheid van het logboekniveau. Toegestane waarden zijn
high
,normal
enlow
. De standaardwaarde isnormal
.--enable-rule-cannot-change-parameter-name
Hiermee schakelt u de regel in waarmee wordt gecontroleerd of parameternamen zijn gewijzigd in openbare methoden.
--enable-rule-attributes-must-match
Hiermee schakelt u de regel in waarmee wordt gecontroleerd of kenmerken overeenkomen.
--exclude-attributes-file <FILE>
Hiermee geeft u het pad naar een of meer bestanden die kenmerken bevatten die moeten worden uitgesloten in DocId-indeling .
Assemblyspecifieke opties
Deze opties zijn alleen van toepassing wanneer assembly's worden vergeleken.
-l, --left, --left-assembly <PATH>
Hiermee geeft u het pad naar een of meer assembly's die dienen als de linkerkant om te vergelijken. Deze optie is vereist bij het vergelijken van assembly's.
-r, --right, --right-assembly <PATH>
Hiermee geeft u het pad naar een of meer assembly's die als de rechterkant dienen om te vergelijken. Deze optie is vereist bij het vergelijken van assembly's.
--strict-mode
Voert API-compatibiliteitscontroles uit in de strikte modus.
Pakketspecifieke opties
Deze opties zijn alleen van toepassing wanneer pakketten worden vergeleken.
--baseline-package
Hiermee geeft u het pad naar een basislijnpakket om het huidige pakket te valideren.
--enable-strict-mode-for-compatible-tfms
Valideert API-compatibiliteit in strikte modus voor contract- en implementatieassembly's voor alle compatibele doelframeworks. De standaardwaarde is
true
.--enable-strict-mode-for-compatible-frameworks-in-package
Valideert API-compatibiliteit in strikte modus voor assembly's die compatibel zijn op basis van hun doelframework.
--enable-strict-mode-for-baseline-validation
Valideert API-compatibiliteit in de strikte modus voor pakketbasislijncontroles.
--package-assembly-references
Hiermee geeft u de paden naar assemblyverwijzingen of de onderliggende mappen voor een specifiek doelframework in het pakket. Scheid meerdere waarden met een komma.
--baseline-package-assembly-references
Hiermee geeft u de paden naar assemblyverwijzingen of de onderliggende mappen voor een specifiek doelframework in het basislijnpakket op. Scheid meerdere waarden met een komma.
--baseline-package-frameworks-to-ignore
Hiermee geeft u de set doelframeworks die moeten worden genegeerd uit het basislijnpakket. De frameworktekenreeks moet exact overeenkomen met de mapnaam in het basislijnpakket.
Voorbeelden
Met de volgende opdracht worden de huidige en basislijnversies van een assembly vergeleken.
apicompat --left bin\Release\net8.0\LibApp5.dll --right bin\Release\net8.0\LibApp5-baseline.dll
Met de volgende opdracht worden de huidige en basislijnversies van een pakket vergeleken.
apicompat package "bin\Release\LibApp5.1.0.0.nupkg" --baseline-package "bin\Release\LibApp5.2.0.0.nupkg"
In het volgende voorbeeld ziet u de opdracht om de huidige en basislijnversies van een assembly te vergelijken, inclusief de controle op wijzigingen in de parameternaam. In het voorbeeld ziet u ook hoe de uitvoer eruit kan zien als een parameternaam is gewijzigd.
>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.