diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml
index c98345e..938e66e 100644
--- a/.github/workflows/dotnet.yml
+++ b/.github/workflows/dotnet.yml
@@ -12,7 +12,18 @@ on:
jobs:
build:
- runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - gh: ubuntu-22.04
+ cs: linux-x64
+ - gh: windows-latest
+ cs: win-x64
+ - gh: macos-latest
+ cs: osx-x64
+
+ runs-on: ${{ matrix.os.gh }}
steps:
- uses: actions/checkout@v4
@@ -32,3 +43,23 @@ jobs:
- name: Test
run: dotnet test --verbosity normal
+
+ - name: Publish CLI
+ run: dotnet publish SlimeVROta -c Release -r ${{ matrix.os.cs }} -o builds/cli-${{ matrix.os.cs }} -p:PublishAot=true
+
+ - name: Upload a build artifact (CLI)
+ uses: actions/upload-artifact@v4
+ with:
+ name: SlimeVR-OTA-${{ matrix.os.cs }}
+ # A file, directory or wildcard pattern that describes what to upload
+ path: builds/cli-${{ matrix.os.cs }}
+
+ - name: Publish GUI
+ run: dotnet publish SlimeVROta.Gui -c Release -r ${{ matrix.os.cs }} -o builds/gui-${{ matrix.os.cs }}
+
+ - name: Upload a build artifact (GUI)
+ uses: actions/upload-artifact@v4
+ with:
+ name: SlimeVR-OTA-GUI-${{ matrix.os.cs }}
+ # A file, directory or wildcard pattern that describes what to upload
+ path: builds/gui-${{ matrix.os.cs }}
diff --git a/SlimeVrOta.Gui/SlimeVrOta.Gui.csproj b/SlimeVrOta.Gui/SlimeVrOta.Gui.csproj
index d2f1201..a6fb8ed 100644
--- a/SlimeVrOta.Gui/SlimeVrOta.Gui.csproj
+++ b/SlimeVrOta.Gui/SlimeVrOta.Gui.csproj
@@ -1,5 +1,5 @@
-
+
WinExe
net8.0
@@ -9,6 +9,10 @@
true
SlimeVR-OTA-GUI
Assets\icon.ico
+ true
+ true
+ true
+ true
@@ -35,5 +39,5 @@
-
+
diff --git a/SlimeVrOta/SlimeVrOta.csproj b/SlimeVrOta/SlimeVrOta.csproj
index 593e0ac..f439eec 100644
--- a/SlimeVrOta/SlimeVrOta.csproj
+++ b/SlimeVrOta/SlimeVrOta.csproj
@@ -7,6 +7,10 @@
enable
SlimeVR-OTA
icon.ico
+ true
+ true
+ true
+ true