Skip to content

Commit 51cc941

Browse files
Fix SSMS VSIX release step + bump to 1.11.2
The v1.11.1 release attempt exposed two bugs in the VSIX step added in #344: 1. The "Warn if SSMS extension build failed" step had `(issue #343)` in a single-line `run:` value. YAML treated ` #343)"` as a comment, leaving pwsh an unterminated string. The step failed, and because it was not continue-on-error it failed the whole job - skipping signing, Velopack, and every artifact upload. v1.11.1 was created empty and has been deleted. 2. The VSIX build itself failed: `msbuild -t:Restore,Build` evaluates the project once before Restore writes the package-generated props, so VSToolsPath never got redirected into the Microsoft.VSSDK.BuildTools package and the VSSDK targets could not be found (MSB4226). Fixes: - Build the VSIX with `msbuild -restore -t:Build` so Restore runs in its own evaluation and the VSSDK targets resolve without the VS workload. - Remove the separate warn step. The build step now only sets a `BUILT` output on success and the upload is gated on it - nothing in the SSMS path can fail the job anymore. - Drop non-ASCII characters from the run-block strings. - Bump version to 1.11.2 (1.11.1 is burned). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 492b59a commit 51cc941

4 files changed

Lines changed: 25 additions & 20 deletions

File tree

.github/workflows/release.yml

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@ jobs:
6363
dotnet publish src/PlanViewer.App/PlanViewer.App.csproj -c Release -r osx-x64 --self-contained -o publish/osx-x64
6464
dotnet publish src/PlanViewer.App/PlanViewer.App.csproj -c Release -r osx-arm64 --self-contained -o publish/osx-arm64
6565
66-
# ── SSMS extension VSIX (issue #343 — get it into automated builds) ──
66+
# ── SSMS extension VSIX (issue 343 — get it into automated builds) ──
6767
# PlanViewer.Ssms is a legacy non-SDK project and is not in PlanViewer.sln,
6868
# so the `dotnet build` above never touches it. It needs full MSBuild plus
69-
# the VSSDK build targets. continue-on-error keeps a VSIX build failure
70-
# from blocking the (critical-path) cross-platform app release.
69+
# the VSSDK build targets from the Microsoft.VSSDK.BuildTools package.
70+
# The build step never fails the job (it only sets an output on success),
71+
# so a VSIX build failure can never block the cross-platform app release.
7172
- name: Add MSBuild to PATH
7273
uses: microsoft/setup-msbuild@v2
7374
continue-on-error: true
@@ -82,33 +83,37 @@ jobs:
8283
$manifest = 'src/PlanViewer.Ssms/source.extension.vsixmanifest'
8384
$manifestVersion = ([xml](Get-Content $manifest)).PackageManifest.Metadata.Identity.Version
8485
if ($manifestVersion -ne $env:VERSION) {
85-
Write-Host "::warning::VSIX manifest version ($manifestVersion) != release version ($env:VERSION) bump source.extension.vsixmanifest and Properties/AssemblyInfo.cs"
86+
Write-Host "::warning::VSIX manifest version ($manifestVersion) does not match release version ($env:VERSION) - bump source.extension.vsixmanifest and Properties/AssemblyInfo.cs"
8687
}
8788
88-
msbuild src/PlanViewer.Ssms/PlanViewer.Ssms.csproj -t:Restore,Build -p:Configuration=Release -p:DeployExtension=false
89+
# Use -restore (not the -t:Restore,Build target list) so the
90+
# package-generated props land in a fresh evaluation before Build.
91+
# Those props redirect VSToolsPath into the Microsoft.VSSDK.BuildTools
92+
# package, which is how the VSSDK targets resolve on a runner that
93+
# lacks the Visual Studio extension-development workload.
94+
msbuild src/PlanViewer.Ssms/PlanViewer.Ssms.csproj -restore -t:Build -p:Configuration=Release -p:DeployExtension=false
8995
dotnet build src/PlanViewer.Ssms.Installer/PlanViewer.Ssms.Installer.csproj -c Release
9096
9197
$vsix = 'src/PlanViewer.Ssms/bin/Release/PlanViewer.Ssms.vsix'
9298
$exe = 'src/PlanViewer.Ssms.Installer/bin/Release/net472/InstallSsmsExtension.exe'
93-
if (-not (Test-Path $vsix)) { throw "VSIX not produced at $vsix" }
94-
if (-not (Test-Path $exe)) { throw "Installer not produced at $exe" }
95-
96-
New-Item -ItemType Directory -Force -Path releases | Out-Null
97-
Copy-Item $vsix 'releases/PlanViewer.Ssms.vsix'
98-
Copy-Item $exe 'releases/InstallSsmsExtension.exe'
99+
if ((Test-Path $vsix) -and (Test-Path $exe)) {
100+
New-Item -ItemType Directory -Force -Path releases | Out-Null
101+
Copy-Item $vsix 'releases/PlanViewer.Ssms.vsix'
102+
Copy-Item $exe 'releases/InstallSsmsExtension.exe'
103+
"BUILT=true" >> $env:GITHUB_OUTPUT
104+
Write-Host "SSMS extension built: $vsix"
105+
} else {
106+
Write-Host "::warning::SSMS extension did not produce the expected artifacts - release published without the VSIX (issue 343)"
107+
}
99108
100109
- name: Upload SSMS extension to release
101-
if: steps.ssms.outcome == 'success'
110+
if: steps.ssms.outputs.BUILT == 'true'
102111
shell: pwsh
103112
env:
104113
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
105114
VERSION: ${{ steps.version.outputs.VERSION }}
106115
run: gh release upload "v$env:VERSION" releases/PlanViewer.Ssms.vsix releases/InstallSsmsExtension.exe --clobber
107116

108-
- name: Warn if SSMS extension build failed
109-
if: steps.ssms.outcome != 'success'
110-
run: echo "::warning::SSMS extension VSIX build failed — release published without it (issue #343)"
111-
112117
# ── SignPath code signing (Windows only, skipped if secret not configured) ──
113118
- name: Check if signing is configured
114119
id: signing

src/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
Tests and server/ projects are outside src/ and are unaffected.
1616
-->
1717
<PropertyGroup>
18-
<Version>1.11.1</Version>
18+
<Version>1.11.2</Version>
1919
<Authors>Erik Darling</Authors>
2020
<Company>Darling Data LLC</Company>
2121
<Product>Performance Studio</Product>

src/PlanViewer.Ssms/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
[assembly: AssemblyProduct("Performance Studio for SSMS")]
88
[assembly: AssemblyCopyright("Copyright Darling Data 2026")]
99
[assembly: ComVisible(false)]
10-
[assembly: AssemblyVersion("1.11.1.0")]
11-
[assembly: AssemblyFileVersion("1.11.1.0")]
10+
[assembly: AssemblyVersion("1.11.2.0")]
11+
[assembly: AssemblyFileVersion("1.11.2.0")]

src/PlanViewer.Ssms/source.extension.vsixmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
44
<Metadata>
55
<Identity Id="PlanViewer.Ssms.64F79022-9D9A-4463-A1AE-4B19426A0CB1"
6-
Version="1.11.1"
6+
Version="1.11.2"
77
Language="en-US"
88
Publisher="Darling Data" />
99
<DisplayName>Performance Studio for SSMS</DisplayName>

0 commit comments

Comments
 (0)