{"id":13458002,"url":"https://github.com/xoofx/dotnet-releaser","last_synced_at":"2026-04-02T12:10:26.276Z","repository":{"id":43380910,"uuid":"452833426","full_name":"xoofx/dotnet-releaser","owner":"xoofx","description":"Easily build, run tests and coverage, cross-compile, package and publish your .NET library or application to NuGet and GitHub.","archived":false,"fork":false,"pushed_at":"2026-03-24T21:07:02.000Z","size":1339,"stargazers_count":754,"open_issues_count":17,"forks_count":28,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-03-26T00:37:49.275Z","etag":null,"topics":["dotnet","releaser","tool"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xoofx.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":".github/FUNDING.yml","license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["xoofx"]}},"created_at":"2022-01-27T20:27:34.000Z","updated_at":"2026-03-24T21:05:17.000Z","dependencies_parsed_at":"2024-06-21T14:39:42.703Z","dependency_job_id":"44063f6d-d54b-49df-879f-41ed2f24ccc0","html_url":"https://github.com/xoofx/dotnet-releaser","commit_stats":{"total_commits":260,"total_committers":10,"mean_commits":26.0,"dds":0.08461538461538465,"last_synced_commit":"1d14fc5a608d1c0da33249e1fc56ac1c188be5b6"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/xoofx/dotnet-releaser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fdotnet-releaser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fdotnet-releaser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fdotnet-releaser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fdotnet-releaser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xoofx","download_url":"https://codeload.github.com/xoofx/dotnet-releaser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fdotnet-releaser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","releaser","tool"],"created_at":"2024-07-31T09:00:42.031Z","updated_at":"2026-04-02T12:10:26.269Z","avatar_url":"https://github.com/xoofx.png","language":"C#","funding_links":["https://github.com/sponsors/xoofx"],"categories":["C\\#","dotnet","Build \u0026 Deploy","C#"],"sub_categories":[],"readme":"# dotnet-releaser [![ci](https://github.com/xoofx/dotnet-releaser/actions/workflows/ci.yml/badge.svg)](https://github.com/xoofx/dotnet-releaser/actions/workflows/ci.yml) [![NuGet](https://img.shields.io/nuget/v/dotnet-releaser.svg)](https://www.nuget.org/packages/dotnet-releaser/)\n\n\u003cimg align=\"right\" width=\"160px\" height=\"160px\" src=\"https://raw.githubusercontent.com/xoofx/dotnet-releaser/main/img/dotnet-releaser.png\"\u003e\n\n`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**.\n\nIn practice, `dotnet-releaser` will automate the build and publish process of your .NET libraries and applications by wrapping:\n\n- `dotnet build` with potentially multiple solutions\n- `dotnet test`\n  - Plus the automatic support for coverage.\n- `dotnet pack` for creating NuGet packages\n- `dotnet publish` that can automatically cross-compile to 9+ CPU/OS platforms.\n  - And create additionally, by default, multiple packages (zip, debian, rpm...) to distribute your app\n- `dotnet nuget push` to publish your package to a NuGet registry\n- [Pretty changelog](https://github.com/xoofx/dotnet-releaser/blob/main/doc/changelog_user_guide.md#11-overview) creation from pull-requests and commits.\n- Create and upload the changelog and all the packages packed to your GitHub repository associated with the release tag.\n- `dotnet-releaser` tool requires .NET 9.0 runtime to be installed.\n  \n![overview](https://raw.githubusercontent.com/xoofx/dotnet-releaser/main/doc/overview.drawio.svg)\n\n## Features\n\n- **Very simple to use, configure and [integrate into your GitHub Action CI](https://github.com/xoofx/dotnet-releaser/tree/main/doc#12-adding-dotnet-releaser-to-your-ci-on-github)**\n- **Build** and **tests** your .NET libraries and applications from **multiple solutions**.\n- Add automatic **coverage** support via [coverlet](https://github.com/coverlet-coverage/coverlet) with your tests.\n- **Cross-compile** your .NET 6.0+ application to **9+ OS/CPU targets**.\n- Create **zip archives**, **Linux packages** (debian, rpm) and **Homebrew taps**\n- Allow to publish your **application as a service** (only `Systemd` for now for `deb` and `rpm` packages).\n- **Create and publish beautiful release notes** by extracting the information directly from pull-requests and commits, while offering [customizable templates](https://github.com/xoofx/dotnet-releaser/blob/main/doc/changelog_user_guide.md).\n- **Publish all artifacts** to **NuGet** and **GitHub**\n- Can be used to build/tests/package/publish locally or from GitHub Action using the same command.\n\n## Defaults\n\nBy default, `dotnet-releaser` will:\n\n- **Build your project(s)/solution(s)** in Release \n- **Run tests** in Release\n- **Create NuGet packages** for libraries and applications (packed as a .NET global tool)\n- **Create application packages** for any packable application in your project:\n  | Platform                                | Packages         |\n  |-----------------------------------------|------------------|\n  | `win-x64`, `win-arm64`                  | `zip`\n  | `linux-x64`, `linux-arm64`              | `rpm`, `deb`, `tar`\n  | `osx-x64`, `osx-arm64`                  | `tar`\n- **Publish libraries and/or applications to NuGet**\n- **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`).\n- **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.\n\n\u003e Any of these steps can be configured or even entirely disabled easily from a config file.\n\u003e See the [user guide](https://github.com/xoofx/dotnet-releaser/blob/main/doc/readme.md) on how to setup this differently for your application.\n## Getting Started\n\n- Install `dotnet-releaser` as a global .NET tool.\n  ```\n  dotnet tool install --global dotnet-releaser\n  ```\n- Go to a folder where you have your solution `.sln`/`.slnx` file or your project file (`.csproj`, `.fsproj`, `.vbproj`) and run:\n  ```\n  dotnet releaser new\n  ```\n- It should create a `dotnet-releaser.toml` at the same level than your solution with a content like:\n  ```toml\n  [msbuild]\n  project = \"Tonlyn.sln\"\n  [github]\n  user = \"xoofx\"\n  repo = \"Tomlyn\"\n  ```\n- If you want to try a full build locally:\n  ```\n  dotnet-releaser build --force dotnet-releaser.toml\n  ```\n- 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](https://github.com/xoofx/dotnet-releaser/tree/main/doc#12-adding-dotnet-releaser-to-your-ci-on-github)_. It is no more complicated than adding the following lines in your GitHub workflow file:\n  ```yaml\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v4\n      with:\n        fetch-depth: 0\n\n    - name: Install .NET 9.0\n      uses: actions/setup-dotnet@v4\n      with:\n        dotnet-version: '9.0.x'\n\n    - name: Build, Tests, Cover, Pack and Publish (on push tag)\n      shell: bash\n      run: |\n        dotnet tool install --global dotnet-releaser\n        dotnet-releaser run --nuget-token \"${{secrets.NUGET_TOKEN}}\" --github-token \"${{secrets.GITHUB_TOKEN}}\" src/dotnet-releaser.toml\n  ```\n  Notice the recommended usage of `shell: bash` so that if a secrets token is empty, bash won't remove the quotes, [unlike pwsh](https://github.com/PowerShell/PowerShell/issues/1995).\n\nSee the user guide below for further details on how to use `dotnet-releaser`.\n\n## User Guide\n\nFor more details on how to use `dotnet-releaser`, please visit the [user guide](https://github.com/xoofx/dotnet-releaser/blob/main/doc/readme.md).\n## License\n\nThis software is released under the [BSD-Clause 2 license](https://opensource.org/licenses/BSD-2-Clause). \n\n## Who is using `dotnet-releaser`?\n\nIt's brand new, so it's mainly used by the author for now! :innocent:\n\nYou can visit the `.github/workflows` folder, or check the release notes of the following projects to see `dotnet-releaser` in action:\n\nApplications:\n- [grpc-curl](https://github.com/xoofx/grpc-curl): An application shipping multiple executables.\n- [lunet](https://github.com/lunet-io/lunet): An application shipping a .NET global tool to NuGet.\n  \nRegular .NET Libraries:\n- [Markdig](https://github.com/xoofx/markdig)\n- [Scriban](https://github.com/scriban/scriban)\n- [Tomlyn](https://github.com/xoofx/Tomlyn)\n- [Zio](https://github.com/xoofx/zio)\n## Credits\n\n`dotnet-releaser` is a wrapper around many amazing OSS libraries:\n\n- [dotnet-packaging](https://github.com/quamotion/dotnet-packaging) by using their NuGet [Packaging.Targets](https://www.nuget.org/packages/Packaging.Targets) to hook package creation into MSBuild user's project.\n- [XenoAtom.CommandLine](https://github.com/XenoAtom/XenoAtom.CommandLine) for handling parsing command line arguments.\n- [XenoAtom.Logging](https://github.com/XenoAtom/XenoAtom.Logging) for logging to the console.\n- [MsBuildPipeLogger](https://github.com/daveaglick/MsBuildPipeLogger) for interacting with MSBuild structured output.\n- [Octokit.NET](https://github.com/octokit/octokit.net) for interacting with GitHub.\n- [Tomlyn](https://github.com/xoofx/Tomlyn) for parsing the TOML configuration file.\n- [CliWrap](https://github.com/Tyrrrz/CliWrap) to easily wrap and launch executables.\n- [Spectre.Console](https://github.com/spectreconsole/spectre.console) for generating pretty logs and table reports.\n- [Scriban](https://github.com/scriban/scriban) used for text templating of the changelog/release notes.\n- [DotNet.Glob](https://github.com/dazinator/DotNet.Glob) used by changelog filtering on files.\n## Author\n\nAlexandre Mutel aka [xoofx](https://xoofx.github.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoofx%2Fdotnet-releaser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoofx%2Fdotnet-releaser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoofx%2Fdotnet-releaser/lists"}