Skip to content

Building from Source

mprattmd edited this page May 31, 2026 · 1 revision

Building from Source

Requires the .NET 9 SDK and PortAudio present on the build machine.

  • macOS: brew install portaudio
  • Linux: install portaudio / libportaudio2 from your distro's package manager

Build and run

# Build everything (Core + platform backend + Avalonia UI)
dotnet build HTCommander.CrossPlatform.sln

# Run the app
dotnet run --project cross/HTCommander.UI.Avalonia/HTCommander.UI.Avalonia.csproj

Linux: build a single-file AppImage

# Needs appimagetool + FUSE on PATH; without them you still get a runnable
# packaging/AppDir/AppRun.
./packaging/build-appimage.sh

See packaging/README.md in the repo for details.


Self-contained publish (no system .NET needed to run)

# Linux x64
dotnet publish cross/HTCommander.UI.Avalonia/HTCommander.UI.Avalonia.csproj \
  -c Release -r linux-x64 --self-contained true -o out/

# macOS Apple Silicon
dotnet publish cross/HTCommander.UI.Avalonia/HTCommander.UI.Avalonia.csproj \
  -c Release -r osx-arm64 --self-contained true -o out/

RuntimeIdentifiers covers win-x64;win-x86;linux-x64;osx-x64;osx-arm64.


Solutions in the repo

  • HTCommander.CrossPlatform.sln — the cross-platform build (Core + Linux/Mac platform backends + Avalonia UI). This is what you build for Linux/macOS.
  • HTCommander.sln — the original Windows/WinForms app under src/, which shares the same Core.

CI / releases

The repo ships GitHub Actions workflows that build and attach the Linux AppImage and macOS .app on a tag push, and (when Developer ID secrets are present) codesign + notarize the macOS app. See .github/workflows/.


Architecture for contributors

See Architecture for the project layout (Core / Platform / UI), the seam interfaces, and the DataBroker pub/sub backbone. Porting status and the plan to close Windows→Linux gaps are in Roadmap and Parity.

Clone this wiki locally