Skip to content

Fix CI: use VS MSBuild for WinAppSdk with dotnet SDK paths #8

Fix CI: use VS MSBuild for WinAppSdk with dotnet SDK paths

Fix CI: use VS MSBuild for WinAppSdk with dotnet SDK paths #8

Workflow file for this run

name: Release & Publish NuGet
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
release:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Setup NuGet
uses: nuget/setup-nuget@v2
- name: Find MSBuild & VS paths
id: vs
shell: pwsh
run: |
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
$vsPath = & $vswhere -latest -requires Microsoft.Component.MSBuild -property installationPath
$msbuild = & $vswhere -latest -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" | Select-Object -First 1
Write-Host "VS Installation: $vsPath"
Write-Host "MSBuild: $msbuild"
"MSBUILD=$msbuild" >> $env:GITHUB_OUTPUT
"VS_PATH=$vsPath" >> $env:GITHUB_OUTPUT
- name: Extract version from tag
id: version
shell: pwsh
run: |
$tag = "${{ github.ref_name }}"
$ver = $tag -replace '^v', ''
"VERSION=$ver" >> $env:GITHUB_OUTPUT
- name: Restore & Build UWP library
shell: pwsh
run: |
nuget restore src/CompositionCollectionView/CompositionCollectionView.csproj
& "${{ steps.vs.outputs.MSBUILD }}" src/CompositionCollectionView/CompositionCollectionView.csproj `
/t:Build /p:Configuration=Release /p:Platform=AnyCPU
- name: Restore & Build WinAppSdk library
shell: pwsh
env:
# Let VS MSBuild find the .NET 10 SDK installed by setup-dotnet
DOTNET_HOST_PATH: ${{ env.DOTNET_ROOT }}\dotnet.exe
run: |
# Restore with dotnet (guaranteed to have .NET 10 SDK)
dotnet restore src/CompositionCollectionView.WinAppSdk/CompositionCollectionView.WinAppSdk.csproj -p:Platform=x64
# Build with VS MSBuild (has PRI tools) using dotnet SDK's .NET 10 targets
& "${{ steps.vs.outputs.MSBUILD }}" src/CompositionCollectionView.WinAppSdk/CompositionCollectionView.WinAppSdk.csproj `
/t:Build /p:Configuration=Release /p:Platform=x64 `
"/p:DotNetRoot=$env:DOTNET_ROOT\" `
"/p:NetCoreTargetingPackRoot=$env:DOTNET_ROOT\packs"
- name: Pack NuGet
shell: pwsh
run: |
nuget pack CompositionCollectionView.nuspec `
-Version ${{ steps.version.outputs.VERSION }} `
-OutputDirectory artifacts
- name: Push to NuGet.org
shell: pwsh
run: |
dotnet nuget push artifacts/*.nupkg `
--api-key ${{ secrets.NUGET_API_KEY }} `
--source https://api.nuget.org/v3/index.json `
--skip-duplicate
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: artifacts/*.nupkg