Easily build, run tests and coverage, cross-compile, package and publish your .NET library or application to NuGet and GitHub.
C#
772
332 commits
updated Jul 14, 2026
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 solutionsdotnet test
dotnet pack for creating NuGet packagesdotnet publish that can automatically cross-compile to 9+ CPU/OS platforms.
dotnet nuget push to publish your package to a NuGet registrydotnet-releaser tool requires .NET 9.0 runtime to be installed.Systemd for now for deb and rpm packages).By default, dotnet-releaser will:
| Platform | Packages |
|---|---|
win-x64, win-arm64 | zip |
linux-x64, linux-arm64 | rpm, deb, tar |
osx-x64, osx-arm64 | tar |
1.0.0, it will try to find a git tag v1.0.0 or 1.0.0).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.
dotnet-releaser as a global .NET tool.
dotnet tool install --global dotnet-releaser
.sln/.slnx file or your project file (.csproj, .fsproj, .vbproj) and run:
dotnet releaser new
dotnet-releaser.toml at the same level than your solution with a content like:
[msbuild]
project = "Tonlyn.sln"
[github]
user = "xoofx"
repo = "Tomlyn"
dotnet-releaser build --force dotnet-releaser.toml
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:
permissions:
# Required to create/update GitHub releases, tags, release notes and assets with GITHUB_TOKEN.
# Use contents: read only if you do not publish anything back to GitHub.
contents: write
# Required by NuGet trusted publishing (`nuget.trusted_publishing = true`).
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET 10.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Build, Tests, Cover, Pack and Publish (on push tag)
shell: bash
run: |
dotnet tool install --global dotnet-releaser
dotnet-releaser run --github-token "${{secrets.GITHUB_TOKEN}}" src/dotnet-releaser.toml
This example assumes [nuget] trusted_publishing = true and user = "your-nuget-user" in dotnet-releaser.toml; you can still pass --nuget-token "${{secrets.NUGET_TOKEN}}" if you use a classic NuGet API key.
If you call dotnet-releaser from a reusable workflow, grant these permissions on the caller job. actions: write is not required by dotnet-releaser itself unless another step in your workflow needs the GitHub Actions API.See the user guide below for further details on how to use dotnet-releaser.
For more details on how to use dotnet-releaser, please visit the user guide.
This software is released under the BSD-Clause 2 license.
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:
Regular .NET Libraries:
dotnet-releaser is a wrapper around many amazing OSS libraries:
Alexandre Mutel aka xoofx.
(top 24 of 27)
448 followers · starred Jan 2022
379 followers · starred Feb 2022
365 followers · starred Aug 2025
116 followers · starred Jan 2022
Easily build, run tests and coverage, cross-compile, package and publish your .NET library or application to NuGet and GitHub.
C#
772
332 commits
updated Jul 14, 2026
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 solutionsdotnet test
dotnet pack for creating NuGet packagesdotnet publish that can automatically cross-compile to 9+ CPU/OS platforms.
dotnet nuget push to publish your package to a NuGet registrydotnet-releaser tool requires .NET 9.0 runtime to be installed.Systemd for now for deb and rpm packages).By default, dotnet-releaser will:
| Platform | Packages |
|---|---|
win-x64, win-arm64 | zip |
linux-x64, linux-arm64 | rpm, deb, tar |
osx-x64, osx-arm64 | tar |
1.0.0, it will try to find a git tag v1.0.0 or 1.0.0).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.
dotnet-releaser as a global .NET tool.
dotnet tool install --global dotnet-releaser
.sln/.slnx file or your project file (.csproj, .fsproj, .vbproj) and run:
dotnet releaser new
dotnet-releaser.toml at the same level than your solution with a content like:
[msbuild]
project = "Tonlyn.sln"
[github]
user = "xoofx"
repo = "Tomlyn"
dotnet-releaser build --force dotnet-releaser.toml
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:
permissions:
# Required to create/update GitHub releases, tags, release notes and assets with GITHUB_TOKEN.
# Use contents: read only if you do not publish anything back to GitHub.
contents: write
# Required by NuGet trusted publishing (`nuget.trusted_publishing = true`).
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET 10.0
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Build, Tests, Cover, Pack and Publish (on push tag)
shell: bash
run: |
dotnet tool install --global dotnet-releaser
dotnet-releaser run --github-token "${{secrets.GITHUB_TOKEN}}" src/dotnet-releaser.toml
This example assumes [nuget] trusted_publishing = true and user = "your-nuget-user" in dotnet-releaser.toml; you can still pass --nuget-token "${{secrets.NUGET_TOKEN}}" if you use a classic NuGet API key.
If you call dotnet-releaser from a reusable workflow, grant these permissions on the caller job. actions: write is not required by dotnet-releaser itself unless another step in your workflow needs the GitHub Actions API.See the user guide below for further details on how to use dotnet-releaser.
For more details on how to use dotnet-releaser, please visit the user guide.
This software is released under the BSD-Clause 2 license.
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:
Regular .NET Libraries:
dotnet-releaser is a wrapper around many amazing OSS libraries:
Alexandre Mutel aka xoofx.
(top 24 of 27)
448 followers · starred Jan 2022
379 followers · starred Feb 2022
365 followers · starred Aug 2025
116 followers · starred Jan 2022