Fix CI: use VS MSBuild for WinAppSdk with dotnet SDK paths #8
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |