diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 000000000..f6325c098
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,37 @@
+# This workflow will build a .NET project
+# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
+
+name: Build
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ branches: [ "master" ]
+
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ name: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, windows-latest, macos-latest]
+ include:
+ - os: ubuntu-latest
+ configuration: UbuntuMac
+ - os: macos-latest
+ configuration: UbuntuMac
+ - os: windows-latest
+ configuration: Release
+
+ steps:
+ - uses: actions/checkout@v4
+ - name: Setup .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.204
+ - name: Restore dependencies
+ run: dotnet restore ./MetaMorpheus/MetaMorpheus.sln
+ - name: Build
+ run: dotnet build --no-restore ./MetaMorpheus/MetaMorpheus.sln --configuration ${{ matrix.configuration }}
diff --git a/MetaMorpheus/GUI/GUI.csproj b/MetaMorpheus/GUI/GUI.csproj
index 29027f365..d57835e75 100644
--- a/MetaMorpheus/GUI/GUI.csproj
+++ b/MetaMorpheus/GUI/GUI.csproj
@@ -16,6 +16,7 @@
full
true
Icons\MMnice.ico
+ true
diff --git a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj
index 27f6145ae..a45054b18 100644
--- a/MetaMorpheus/GuiFunctions/GuiFunctions.csproj
+++ b/MetaMorpheus/GuiFunctions/GuiFunctions.csproj
@@ -6,6 +6,7 @@
full
true
true
+ true
diff --git a/MetaMorpheus/MetaMorpheus.sln b/MetaMorpheus/MetaMorpheus.sln
index d03b322a1..f6a4a2a48 100644
--- a/MetaMorpheus/MetaMorpheus.sln
+++ b/MetaMorpheus/MetaMorpheus.sln
@@ -26,40 +26,54 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
+ UbuntuMac|Any CPU = UbuntuMac|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
+ {FD20EBBA-F4C5-40D6-AD61-48A7EB255DAE}.UbuntuMac|Any CPU.Build.0 = Release|Any CPU
{C654FC97-FBD1-43D7-9F61-35FDD1A4E0AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C654FC97-FBD1-43D7-9F61-35FDD1A4E0AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C654FC97-FBD1-43D7-9F61-35FDD1A4E0AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C654FC97-FBD1-43D7-9F61-35FDD1A4E0AD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C654FC97-FBD1-43D7-9F61-35FDD1A4E0AD}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
{FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
+ {FFAE3A5E-B5AE-4CD0-ABF9-703C91F1C7D6}.UbuntuMac|Any CPU.Build.0 = Release|Any CPU
{9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
+ {9CD3D75C-4E3C-40AC-A3D8-C32DD528DB7F}.UbuntuMac|Any CPU.Build.0 = Release|Any CPU
{BE72541A-66A4-4958-9D19-56ACC7D3876B}.Debug|Any CPU.ActiveCfg = Debug|x64
{BE72541A-66A4-4958-9D19-56ACC7D3876B}.Debug|Any CPU.Build.0 = Debug|x64
{BE72541A-66A4-4958-9D19-56ACC7D3876B}.Release|Any CPU.ActiveCfg = Release|x64
{BE72541A-66A4-4958-9D19-56ACC7D3876B}.Release|Any CPU.Build.0 = Release|x64
+ {BE72541A-66A4-4958-9D19-56ACC7D3876B}.UbuntuMac|Any CPU.ActiveCfg = Release|x64
{653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.Debug|Any CPU.Build.0 = Debug|Any CPU
{653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.Release|Any CPU.ActiveCfg = Release|Any CPU
{653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.Release|Any CPU.Build.0 = Release|Any CPU
+ {653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
+ {653015B3-CC5A-4D1C-AAD3-1CE2A0C4D197}.UbuntuMac|Any CPU.Build.0 = Release|Any CPU
{7EE028A9-75A2-450F-A9A7-76559ED15419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EE028A9-75A2-450F-A9A7-76559ED15419}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EE028A9-75A2-450F-A9A7-76559ED15419}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7EE028A9-75A2-450F-A9A7-76559ED15419}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7EE028A9-75A2-450F-A9A7-76559ED15419}.UbuntuMac|Any CPU.ActiveCfg = Release|Any CPU
+ {7EE028A9-75A2-450F-A9A7-76559ED15419}.UbuntuMac|Any CPU.Build.0 = Release|Any CPU
{E0EA5AC4-24A9-43DC-8FBC-CCEB3B9935B6}.Debug|Any CPU.ActiveCfg = Debug|x64
{E0EA5AC4-24A9-43DC-8FBC-CCEB3B9935B6}.Debug|Any CPU.Build.0 = Debug|x64
{E0EA5AC4-24A9-43DC-8FBC-CCEB3B9935B6}.Release|Any CPU.ActiveCfg = Release|x64
{E0EA5AC4-24A9-43DC-8FBC-CCEB3B9935B6}.Release|Any CPU.Build.0 = Release|x64
+ {E0EA5AC4-24A9-43DC-8FBC-CCEB3B9935B6}.UbuntuMac|Any CPU.ActiveCfg = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/MetaMorpheus/Test/SpectralRecoveryTest.cs b/MetaMorpheus/Test/SpectralRecoveryTest.cs
index 40c519ec4..3257361c6 100644
--- a/MetaMorpheus/Test/SpectralRecoveryTest.cs
+++ b/MetaMorpheus/Test/SpectralRecoveryTest.cs
@@ -285,6 +285,8 @@ public static void MiniClassicSearchEngineTest()
[Test]
public static void SpectralWriterTest()
{
+ foreach (var specLibPath in Directory.GetFiles(outputFolder, "*.msp", SearchOption.AllDirectories))
+ File.Delete(specLibPath);
PostSearchAnalysisTask postSearchTask = new PostSearchAnalysisTask()
{
@@ -377,7 +379,7 @@ public static void SpectralWriterTest()
postSearchTask.Run();
var libraryList = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
- string updateLibraryPath = libraryList.First(p => p.Contains("SpectralLibrary") && !p.Contains(matchingvalue)).ToString();
+ string updateLibraryPath = libraryList.First(p => p.Contains("updateSpectralLibrary") && !p.Contains(matchingvalue)).ToString();
var updatedLibraryWithoutDecoy = new SpectralLibrary(new List { Path.Combine(path, updateLibraryPath) });
Assert.That(updatedLibraryWithoutDecoy.TryGetSpectrum("EESGKPGAHVTVK", 2, out spectrum));
diff --git a/MetaMorpheus/Test/Test.csproj b/MetaMorpheus/Test/Test.csproj
index 10ecccb53..12286e77f 100644
--- a/MetaMorpheus/Test/Test.csproj
+++ b/MetaMorpheus/Test/Test.csproj
@@ -5,6 +5,7 @@
false
Debug;Release
full
+ true