Skip to content

Build And Release

samatstarion edited this page Jan 19, 2025 · 2 revisions

Development Environment

uml4net is developed using Visual Studio 2022.

The following tools are used by the Starion Group development team:

  • Visual Studio 2022 Professional (Community Edtion will work as well)
  • Resharper Ultimate 2024.2.1 or later
  • Git Extensions

Prepare for Release

Follow the steps to create pre-release nugets that are not optimized using the Debug configuration or a release nugets using the Release configuration:

  1. Run all unit tests and verify that they pass
  2. Make sure the version numbers of the projects are incremented when things have changed; the project makes use of SEMVER.
  3. Update the <PackageReleaseNotes> in the .csproj files; this will be visible on https://nuget.org
  4. Via the GitHub web-ui draft a new release referencing the tag and set the release title to Version MAJOR.MINOR.PATCH. The description of the release shall mention the updates referencing the GitHub issue numbers.

NOTE: The .csproj files contain settings that indicate that a symbols package is created as well. When using dotnet push to publish the packages on https://nuget.org, the symbols packages will be pushed as well.

Create Release

First clean the solution and then pack. The pack command will build and create the nugets. The --include-source parameter is used to add the symbols and the source code to a specific symbols nuget.

dotnet clean -c Release uml4net.sln
dotnet pack --include-source -c Release uml4net.sln -o ReleaseBuilds

In case you want to push the new nugets to https://nuget.org use the following command. You will require an API Key. This needs to be repeated for each nuget that needs to be published.

dotnet nuget push uml4net.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"
dotnet nuget push uml4net.Extensions.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"
dotnet nuget push uml4net.xmi.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"
dotnet nuget push uml4net.HandleBars.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"
dotnet nuget push uml4net.Reporting.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"
dotnet nuget push uml4net.Tools.MAJOR.MINOR.PATCH.nupkg --source https://api.nuget.org/v3/index.json --api-key "your-api-key"

the release.bat file automates these steps, execute it from the commandline using your nuget API key:

./release.bat <your-api-key>

The release.bat includes the uml4net.Tools package tool and publishes that to nuget. For windows users that do not have access to nuget.org to install the application a self-contained executable is made available. Run the following command from the solution folder.

dotnet publish -c Release uml4net.Tools\uml4net.Tools.csproj -r win-x64 --self-contained true -p:PublishSingleFile=true -o ReleaseBuilds

Compute the SHA-256 of the uml4net.Tools.Exe file. Upload the file to the release notes page and include the hash in the text.

Clone this wiki locally