From 33f6ec63eb60018cae9bbd80accf0e69fd9f3944 Mon Sep 17 00:00:00 2001
From: Teemu Korhonen <80648513+ts-korhonen@users.noreply.github.com>
Date: Mon, 6 Oct 2025 20:49:13 +0300
Subject: [PATCH] Fix publishing to Nuget feed. (#1939)
Adjust the glob pattern to select only one .nupkg
file.
In #1928 nuget generation changed so that
there's one main nupkg to publish and platform
library artifacts have their own platform specific
ones.
Changes from before:
* Add x86 to build process.
- Use recommended structure for multi-platform nuget.
- Separate build and pack to allow x64 and x86 builds.
- Use matrix in Github Actions to reduce repetition.
* Properly implement multi-platform nuget build.
- Split build pipeline to setting version, building and packing.
- Build AnyCPU only as reference assemblies.
- Add ref folder to nuget.
* Restructure project and pipeline.
Based on PR review discussion.
- Restore default x64,x86 build process.
- Build generates platform specific nupkg.
- Remove AnyCPU platform to prevent confusion.
- Add custom property for building reference libraries.
- AnyCPU is only set by the property.
- Move nuget changes to separate target file.
- Imported only when custom property is set.
- Clear separation from the default build.
- Merge frameworks in published library artifacts.
- Re-simplify pipelines; no matrix or separate jobs.
---
.github/workflows/master.yml | 52 +++++++++++--------
.github/workflows/pull requests.yml | 50 ++++++++++--------
.../LibreHardwareMonitorLib.csproj | 12 ++++-
LibreHardwareMonitorLib/main.nuget.target | 27 ++++++++++
4 files changed, 96 insertions(+), 45 deletions(-)
create mode 100644 LibreHardwareMonitorLib/main.nuget.target
diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml
index 544cbfc..fb66abb 100644
--- a/.github/workflows/master.yml
+++ b/.github/workflows/master.yml
@@ -30,39 +30,47 @@ jobs:
else { $_ -replace $m.Value, ("{0}.{1}.{2}-pre${{ github.run_number }}" -f $m.Groups[1].Value,$m.Groups[2].Value,([convert]::ToInt32($m.Groups[3].Value)+1)); }
} | Set-Content Directory.Build.props
- - name: NuGet restore
- run: dotnet restore LibreHardwareMonitor.sln
+ - name: Restore application packages
+ run: dotnet restore LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj
- - name: Build
- run: dotnet build LibreHardwareMonitor.sln --configuration Release --no-restore
+ - name: Build application
+ run: dotnet build LibreHardwareMonitor\LibreHardwareMonitor.csproj -c Release -p:Platform=x64
- - name: Publish net472
+ - name: Publish application
uses: actions/upload-artifact@v4
with:
- name: LibreHardwareMonitor-net472
+ name: LibreHardwareMonitor
path: |
bin/Release/net472
- - name: Publish netstandard20
- uses: actions/upload-artifact@v4
- with:
- name: LibreHardwareMonitorLib-netstandard20
- path: |
- bin/Release/netstandard2.0
+ - name: Restore library packages
+ run: dotnet restore LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj
- - name: Publish net80
- uses: actions/upload-artifact@v4
- with:
- name: LibreHardwareMonitorLib-net80
- path: |
- bin/Release/net8.0
+ - name: Build x64 libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:Platform=x64
- - name: Publish net90
+ - name: Publish x64 libraries
uses: actions/upload-artifact@v4
with:
- name: LibreHardwareMonitorLib-net90
+ name: LibreHardwareMonitorLib (x64)
path: |
- bin/Release/net9.0
+ bin/Release/x64
+
+ - name: Build x86 libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:Platform=x86
+
+ - name: Publish x86 libraries
+ uses: actions/upload-artifact@v4
+ with:
+ name: LibreHardwareMonitorLib (x86)
+ path: |
+ bin/Release/x86
+
+ - name: Build reference libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:BuildOnlyRefs=true
+
+ - name: Pack main nupkg
+ run: dotnet pack LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release -p:PackMainNuget=true --no-build --output bin\Release
- name: Publish nupkg
uses: actions/upload-artifact@v4
@@ -72,4 +80,4 @@ jobs:
bin/Release/LibreHardwareMonitorLib.*.nupkg
- name: Publish to NuGet
- run: nuget push **\*.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}}
+ run: nuget push bin/Release/LibreHardwareMonitorLib.*.nupkg -Source 'https://api.nuget.org/v3/index.json' -ApiKey ${{secrets.NUGET_API_KEY}}
diff --git a/.github/workflows/pull requests.yml b/.github/workflows/pull requests.yml
index 3f57016..a87635c 100644
--- a/.github/workflows/pull requests.yml
+++ b/.github/workflows/pull requests.yml
@@ -30,39 +30,47 @@ jobs:
else { $_ -replace $m.Value, ("{0}.{1}.{2}-ci${{ github.run_number }}" -f $m.Groups[1].Value,$m.Groups[2].Value,([convert]::ToInt32($m.Groups[3].Value)+1)); }
} | Set-Content Directory.Build.props
- - name: Restore packages
- run: dotnet restore LibreHardwareMonitor.sln
+ - name: Restore application packages
+ run: dotnet restore LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj
- - name: Build
- run: dotnet build LibreHardwareMonitor.sln --configuration Release --no-restore
+ - name: Build application
+ run: dotnet build LibreHardwareMonitor\LibreHardwareMonitor.csproj -c Release -p:Platform=x64
- - name: Publish net472
+ - name: Publish application
uses: actions/upload-artifact@v4
with:
- name: LibreHardwareMonitor-net472
+ name: LibreHardwareMonitor
path: |
bin/Release/net472
- - name: Publish netstandard20
- uses: actions/upload-artifact@v4
- with:
- name: LibreHardwareMonitorLib-netstandard20
- path: |
- bin/Release/netstandard2.0
+ - name: Restore library packages
+ run: dotnet restore LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj
- - name: Publish net80
- uses: actions/upload-artifact@v4
- with:
- name: LibreHardwareMonitorLib-net80
- path: |
- bin/Release/net8.0
+ - name: Build x64 libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:Platform=x64
- - name: Publish net90
+ - name: Publish x64 libraries
uses: actions/upload-artifact@v4
with:
- name: LibreHardwareMonitorLib-net90
+ name: LibreHardwareMonitorLib (x64)
path: |
- bin/Release/net9.0
+ bin/Release/x64
+
+ - name: Build x86 libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:Platform=x86
+
+ - name: Publish x86 libraries
+ uses: actions/upload-artifact@v4
+ with:
+ name: LibreHardwareMonitorLib (x86)
+ path: |
+ bin/Release/x86
+
+ - name: Build reference libraries
+ run: dotnet build LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release --no-restore -p:BuildOnlyRefs=true
+
+ - name: Pack main nupkg
+ run: dotnet pack LibreHardwareMonitorLib\LibreHardwareMonitorLib.csproj -c Release -p:PackMainNuget=true --no-build --output bin\Release
- name: Publish nupkg
uses: actions/upload-artifact@v4
diff --git a/LibreHardwareMonitorLib/LibreHardwareMonitorLib.csproj b/LibreHardwareMonitorLib/LibreHardwareMonitorLib.csproj
index 1fbfdec..cc9428f 100644
--- a/LibreHardwareMonitorLib/LibreHardwareMonitorLib.csproj
+++ b/LibreHardwareMonitorLib/LibreHardwareMonitorLib.csproj
@@ -19,12 +19,19 @@
packageicon.png
true
x64;x86
+ win-x64;win-x86
+ $(NoWarn);CA1416
+
+
+ AnyCPU
+ true
+ false
- ..\bin\Debug\
+ ..\bin\Debug\$(Platform)\
- ..\bin\Release\
+ ..\bin\Release\$(Platform)\
true
@@ -63,4 +70,5 @@
True
+
diff --git a/LibreHardwareMonitorLib/main.nuget.target b/LibreHardwareMonitorLib/main.nuget.target
new file mode 100644
index 0000000..a6619ed
--- /dev/null
+++ b/LibreHardwareMonitorLib/main.nuget.target
@@ -0,0 +1,27 @@
+
+
+
+ false
+ $(NoWarn);NU5131
+
+
+
+ runtimes\win-x64\lib\
+
+
+ runtimes\win-x64\lib\
+
+
+ runtimes\win-x86\lib\
+
+
+ runtimes\win-x86\lib\
+
+
+ ref\
+
+
+ ref\
+
+
+
\ No newline at end of file