dotnet-releaser 0.13.1

dotnet tool install --global dotnet-releaser --version 0.13.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local dotnet-releaser --version 0.13.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=dotnet-releaser&version=0.13.1
                    
nuke :add-package dotnet-releaser --version 0.13.1
                    

dotnet-releaser ci NuGet

<img align="right" width="160px" height="160px" src="https://raw.githubusercontent.com/xoofx/dotnet-releaser/main/img/dotnet-releaser.png">

dotnet-releaser is an all-in-one command line tool that fully automates the release cycle of your .NET libraries and applications to NuGet and GitHub by building, testing, running coverage, cross-compiling, packaging, creating release notes from PR/commits and publishing.

In practice, dotnet-releaser will automate the build and publish process of your .NET libraries and applications by wrapping:

  • dotnet build with potentially multiple solutions
  • dotnet test
    • Plus the automatic support for coverage.
  • dotnet pack for creating NuGet packages
  • dotnet publish that can automatically cross-compile to 9+ CPU/OS platforms.
    • And create additionally, by default, multiple packages (zip, debian, rpm...) to distribute your app
  • dotnet nuget push to publish your package to a NuGet registry
  • Pretty changelog creation from pull-requests and commits.
  • Create and upload the changelog and all the packages packed to your GitHub repository associated with the release tag.
  • It can publish automatically the coverage results to a badge in a GitHub gist or to https://coveralls.io if your repository is created there.
  • dotnet-releaser tool requires .NET 9.0 runtime to be installed.

overview

Features

  • Very simple to use, configure and integrate into your GitHub Action CI
  • Build and tests your .NET libraries and applications from multiple solutions.
  • Add automatic coverage support via coverlet with your tests.
  • Cross-compile your .NET 6.0+ application to 9+ OS/CPU targets.
  • Create zip archives, Linux packages (debian, rpm) and Homebrew taps
  • Allow to publish your application as a service (only Systemd for now for deb and rpm packages).
  • Create and publish beautiful release notes by extracting the information directly from pull-requests and commits, while offering customizable templates.
  • Publish all artifacts to NuGet and GitHub
  • Can be used to build/tests/package/publish locally or from GitHub Action using the same command.

Defaults

By default, dotnet-releaser will:

  • Build your project(s)/solution(s) in Release
  • Run tests in Release
  • Create NuGet packages for libraries and applications (packed as a .NET global tool)
  • Create application packages for any packable application in your project: | Platform | Packages | |-----------------------------------------|------------------| | win-x64, win-arm64 | zip | linux-x64, linux-arm64 | rpm, deb, tar | osx-x64, osx-arm64 | tar
  • Publish libraries and/or applications to NuGet
  • Upload all the package artifacts and your changelog to GitHub on the tag associated with your package version (e.g your package is 1.0.0, it will try to find a git tag v1.0.0 or 1.0.0).
  • Create a Homebrew repository and formula (e.g user_or_org/homebrew-your-app-name) for all the tar files associated with the targets for Linux and MacOS.

Any of these steps can be configured or even entirely disabled easily from a config file. See the user guide on how to setup this differently for your application.

Getting Started

  • Install dotnet-releaser as a global .NET tool.
    dotnet tool install --global dotnet-releaser
    
  • Go to a folder where you have your solution .sln file or your project file (.csproj, .fsproj, .vbproj) and run:
    dotnet releaser new
    
  • It should create a dotnet-releaser.toml at the same level than your solution with a content like:
    [msbuild]
    project = "Tonlyn.sln"
    [github]
    user = "xoofx"
    repo = "Tomlyn"
    
  • If you want to try a full build locally:
    dotnet-releaser build --force dotnet-releaser.toml
    
  • If you want to integrate it to GitHub Action, use the dotnet-releaser run command. More details in the doc Adding dotnet-releaser to your CI on GitHub. It is no more complicated than adding the following lines in your GitHub workflow file:
      steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
    
      - name: Install .NET 9.0
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: '9.0.x'
    
      - name: Build, Tests, Cover, Pack and Publish (on push tag)
        shell: bash
        run: |
          dotnet tool install --global dotnet-releaser
          dotnet-releaser run --nuget-token "${{secrets.NUGET_TOKEN}}" --github-token "${{secrets.GITHUB_TOKEN}}" src/dotnet-releaser.toml
    
    Notice the recommended usage of shell: bash so that if a secrets token is empty, bash won't remove the quotes, unlike pwsh.

See the user guide below for further details on how to use dotnet-releaser.

User Guide

For more details on how to use dotnet-releaser, please visit the user guide.

License

This software is released under the BSD-Clause 2 license.

Who is using dotnet-releaser?

It's brand new, so it's mainly used by the author for now! 😇

You can visit the .github/workflows folder, or check the release notes of the following projects to see dotnet-releaser in action:

Applications:

  • grpc-curl: An application shipping multiple executables.
  • lunet: An application shipping a .NET global tool to NuGet.

Regular .NET Libraries:

Credits

dotnet-releaser is a wrapper around many amazing OSS libraries:

Author

Alexandre Mutel aka xoofx.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.13.1 125 9/14/2025
0.13.0 59 9/14/2025
0.12.1 57 9/14/2025
0.12.0 2,466 4/11/2025
0.11.0 2,937 12/19/2024
0.10.0 953 11/13/2024
0.9.0 3,499 5/6/2024
0.8.5 2,657 2/13/2024
0.8.4 853 2/9/2024
0.8.3 837 2/9/2024
0.8.2 855 2/8/2024
0.8.1 875 2/8/2024
0.8.0 782 2/8/2024
0.7.1 3,525 10/14/2023
0.7.0 1,456 10/7/2023
0.6.4 2,391 9/8/2023
0.6.3 5,660 3/8/2023
0.6.2 1,735 3/6/2023
0.6.1 2,967 11/14/2022
0.6.0 1,584 11/14/2022
0.5.2 2,057 10/20/2022
0.5.1 1,656 10/19/2022
0.5.0 1,862 9/5/2022
0.4.4 2,078 8/31/2022
0.4.3 1,670 8/28/2022
0.4.2 1,934 8/11/2022
0.4.1 2,655 5/7/2022
0.4.0 2,032 4/11/2022
0.3.14 2,091 3/7/2022
0.3.13 1,557 3/7/2022
0.3.12 1,819 3/6/2022
0.3.11 1,548 3/6/2022
0.3.10 1,767 3/6/2022
0.3.9 1,740 3/5/2022
0.3.8 1,669 3/5/2022
0.3.7 1,492 3/4/2022
0.3.6 1,784 3/3/2022
0.3.5 1,698 3/3/2022
0.3.4 1,467 3/1/2022
0.3.3 1,653 2/27/2022
0.3.2 1,753 2/27/2022
0.3.1 1,641 2/27/2022
0.3.0 1,687 2/27/2022
0.2.2 1,547 2/25/2022
0.2.1 1,555 2/25/2022
0.2.0 1,351 2/25/2022
0.1.12 1,647 2/8/2022
0.1.11 1,630 2/4/2022
0.1.10 1,587 2/4/2022
0.1.9 1,570 2/3/2022
0.1.8 1,488 2/3/2022
0.1.7 1,538 2/3/2022
0.1.6 1,725 2/2/2022
0.1.5 1,683 1/31/2022
0.1.4 1,607 1/31/2022
0.1.3 1,630 1/31/2022
0.1.2 1,603 1/31/2022
0.1.1 1,798 1/31/2022
0.1.0 1,785 1/29/2022