nuget-license
nuget-license copied to clipboard
.NET Core tool to print or save all the licenses of a project
trafficstars
Nuget License Utility

A .net core tool to print the licenses of a project. This tool support .NET Core and .NET Standard Projects.
dotnet-project-licenses tool
Install tool
dotnet tool install --global dotnet-project-licenses
Uninstall tool
dotnet tool uninstall --global dotnet-project-licenses
Usage
Usage: dotnet-project-licenses [options]
Options:
| Option | Description |
| -i, --input | Project Folder |
| -o, --output | (Default: false) Save as text file (licenses.txt) |
| --outfile | Output filename |
| -f, --output-directory | Output Directory/Folder |
| -j, --json | (Default: false) Save licenses list in a json file (licenses.json) |
| -m, --md | (Default: false) Save licenses list in a markdown file (licenses.md) |
| --include-project-file | (Default: false) Add project file path to information when enabled |
| -l, --log-level | (Default: Error) Set log level for output display. Options: Error,Warning,Information,Verbose |
| --allowed-license-types | Simple json file of a text array of allowable licenses, if no file is given, all are assumed allowed |
| --manual-package-information | Simple json file of an array of LibraryInfo objects for manually determined packages |
| --licenseurl-to-license-mappings | Simple json file of Dictionary |
| -t, --include-transitive | Include distinct transitive package licenses per project file |
| --use-project-assets-json | Use the resolved project.assets.json file for each project as the source of package information. Requires the -t option since this always includes transitive.references. Requires nuget restore or dotnet restore to be run first |
| --projects-filter | Simple json file of a text array of projects to skip. Supports Ends with matching such as 'Tests.csproj, Tests.vbproj, Tests.fsproj' |
| --packages-filter | Simple json file of a text array of packages to skip. Or a regular expression defined between two forward slashes '/regex/' or two hashes '#regex#' |
| -u, --unique | (Default: false) Unique licenses list by Id/Version |
| -p, --print | (Default: true) Print licenses |
| -e, --export-license-texts | Export the raw license texts |
| -c, --convert-html-to-text | Strip HTML tags if the license file is HTML and save as plain text (EXPERIMENTAL) |
| --help | Display this help screen |
| --version | Display version information |
| --ignore-ssl-certificate-errors | Ignore SSL certificate errors in HttpClient |
| --timeout | Set HttpClient timeout in seconds |
| --proxy-url | Set a proxy server URL to be used by HttpClient |
| --proxy-system-auth | Use the system credentials for proxy authentication |
Example tool commands
dotnet-project-licenses --help
dotnet-project-licenses -i projectFolder
Print unique licenses
Values for the input may include a folder path, a Visual Studio '.sln' file, a '.csproj' or a '.fsproj' file or a '.vbproj' file.
dotnet-project-licenses -i projectFolder -u
Creates output file of unique licenses in a plain text 'licenses.txt' file in current directory
dotnet-project-licenses -i projectFolder -u -o
Create output file 'new-name.txt' in another directory
dotnet-project-licenses -i projectFolder -o --outfile ../../../another/folder/new-name.txt
Creates output json file of unique licenses in a file 'licenses.json' in the current directory
dotnet-project-licenses -i projectFolder -u -o -j
Exports all license texts in the current directory
dotnet-project-licenses -i projectFolder --export-license-texts
Exports all license texts in ~/Projects/github directory and output json in ~/Projects/output.json
dotnet-project-licenses -i projectFolder -o -j -f ~/Projects/github --outfile ~/Projects/output.json --export-license-texts
Exports all license texts in the current directory excluding all Microsoft packages. Licenses in HTML format are saved as plain text files.
dotnet-project-licenses -i projectFolder --export-license-texts --convert-html-to-text --packages-filter '/Microsoft.*/'
Prints licenses used by a compiled solution excluding all System packages
dotnet-project-licenses -i projectSolution.sln --use-project-assets-json --packages-filter '#System\..*#'
Use a proxy server when getting nuget package information via http requests
dotnet-project-licenses -i projectFolder --proxy-url "http://my.proxy.com:8080"
Use a proxy server requiring authentication with the system credentials
dotnet-project-licenses -i projectFolder --proxy-url "http://my.proxy.com:8080" --proxy-system-auth
Docker
Build the image
docker build . -t nuget-license
Run the image and export the licenses locally
docker run -it -v projectPath:/tmp nuget-license -i /tmp -f /tmp --export-license-texts -l Verbose
where projectPath is the path of the project that you want to export the licenses.
You can also add the command parameters of the tool.
ex.
docker run -it -v ~/Projects/github/nuget-license:/tmp nuget-license -i /tmp -o --export-license-texts -l Verbose