dotnet / arcade

Tools that provide common build infrastructure for multiple .NET Foundation projects.
MIT License
672 stars 347 forks source link

GenAPI tool documentation #4501

Open SeanFeldman opened 4 years ago

SeanFeldman commented 4 years ago

Is the GenAPI tool intended for public use? And if the answer is "yes", is there any documentation available?

markwilkie commented 4 years ago

cc/ @ericstj

ericstj commented 4 years ago

It's not intended for public use in the same way the rest of the dotnet/sdk and others are. It isn't a publicly shipping tool, it's used to facilitate the build infrastructure of .NETCore. As such we take a primarily reactive approach to changes. We only make changes to it when we need those changes for our infrastructure. /cc @safern

I'm not opposed to folks contributing more features / docs, but right now the best we have is running the tool with --?:

C:\Users\ericstj\.nuget\packages\microsoft.dotnet.genapi\5.0.0-beta.19567.2\tools\netcoreapp2.1>dotnet Microsoft.DotNet.GenAPI.dll -?
A command line tool to generate code for the API surface of an assembly. 5.0.0.0

Usage: GenAPI [arguments] [options]

Arguments:
  assembly                        Path for an specific assembly or a directory to get all assemblies.

Options:
  -?|-h|--help                    Show help information
  -v|--version                    Show version information
  -l|--lib-path                   Delimited (',' or ';') set of paths to use for resolving assembly references
  -a|--api-list                   Specify a api list in the DocId format of which APIs to include.
  -o|--out                        Output path. Default is the console. Can specify an existing directory as well and then a file will be created for each assembly with the matching name of the assembly.
  -h|--header-file                Specify a file with header content to prepend to output.
  -w|--writer                     Specify the writer type to use. Legal values: CSDecl, DocIds, TypeForwards, TypeList. Default is CSDecl.
  -s|--syntax                     Specific the syntax writer type. Only used if the writer is CSDecl. Legal values: Text, Html, Xml. Default is Text.
  -d|--doc-id-kinds               Only include API of the specified kinds. Legal values: A, Assembly, Namespace, N, T, Type, Field, F, P, Property, Method, M, Event, E, All. Default is All.
  -t|--throw                      Method bodies should throw PlatformNotSupportedException.
  -g|--global                     Include global prefix for compilation.
  --exclude-api-list              Specify a api list in the DocId format of which APIs to exclude.
  --exclude-attributes-list       Specify a list in the DocId format of which attributes should be excluded from being applied on apis.
  --follow-type-forwards          [CSDecl] Resolve type forwards and include its members.
  --api-only                      [CSDecl] Include only API's not CS code that compiles.
  --all                           Include all API's not just public APIs. Default is public only.
  --member-headings               [CSDecl] Include member headings for each type of member.
  --hightlight-base-members       [CSDecl] Highlight overridden base members.
  --hightlight-interface-members  [CSDecl] Highlight interface implementation members.
  --always-include-base           [CSDecl] Include base types, interfaces, and attributes, even when those types are filtered.
  --exclude-members               Exclude members when return value or parameter types are excluded.
  --lang-version                  Language Version to target

Let us know if you're planning on using it and we can consider making things easier, or better supporting your scenario.