From fc7f4f4c56cdb518c7a2d7d2e0f85e27b5fc2319 Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Mon, 17 Aug 2026 17:10:59 -0700 Subject: [PATCH 01/11] Add nuget cli alternative to Test-DotnetnNewTemplates for local execution --- .../Dotnet/Test-DotnetNewTemplates.ps1 | 112 ++++++++++++++---- 1 file changed, 91 insertions(+), 21 deletions(-) diff --git a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 index e9c02679a9..2ce3d4f717 100644 --- a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 +++ b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 @@ -453,31 +453,101 @@ function Get-LatestOfficialWasdkVersion { $sourceFeed = 'https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/flat2/microsoft.windowsappsdk/index.json' $excludedVersionPrefixes = @('2.63.') $token = $env:SYSTEM_ACCESSTOKEN - if ([string]::IsNullOrWhiteSpace($token)) { - Write-Warning "SYSTEM_ACCESSTOKEN is not set; cannot query the package source for versions." - return $null - } try { - [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 - $response = Invoke-RestMethod -Uri $sourceFeed -Headers @{ Authorization = "Bearer $token" } -TimeoutSec 30 -ErrorAction Stop - $latest = $null - foreach ($v in $response.versions) { - if ($v -match '-') { continue } # skip prerelease - $excluded = $false - foreach ($p in $excludedVersionPrefixes) { if ($v.StartsWith($p)) { $excluded = $true; break } } - if ($excluded) { continue } - $parsed = $null - if (-not [version]::TryParse($v, [ref]$parsed)) { continue } - if (($null -eq $latest) -or ($parsed -gt $latest.Ver)) { - $latest = [pscustomobject]@{ Raw = $v; Ver = $parsed } + # SYSTEM_ACCESSTOKEN is a pipeline variable. Use nuget CLI when running outside of pipeline runs + if ([string]::IsNullOrWhiteSpace($token)) { + Write-Warning "SYSTEM_ACCESSTOKEN is not set; cannot query package source for latest official Microsoft.WindowsAppSDK version." + Write-Host "Using NuGet CLI instead" + $packageId = 'Microsoft.WindowsAppSDK' + $sourceFeed = 'https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json' + $excludedVersionPrefixes = @('1.0.', '1.1.') + $json = & dotnet package search $packageId ` + --source $sourceFeed ` + --exact-match ` + --format json ` + --verbosity quiet + + if ($LASTEXITCODE -ne 0) { + throw "dotnet package search failed with exit code $LASTEXITCODE." } - } - if ($latest) { - Write-Host "Latest official Microsoft.WindowsAppSDK = $($latest.Raw) (excluded prerelease and $($excludedVersionPrefixes -join ', ')*)" + + $response = $json | ConvertFrom-Json + + $problems = @() + + if ($response.PSObject.Properties['problems']) { + $problems += @($response.problems) + } + + foreach ($result in @($response.searchResult)) { + if ($result.PSObject.Properties['problems']) { + $problems += @($result.problems) + } + } + + if ($problems.Count -gt 0) { + throw ($problems | ForEach-Object { $_.text } | Join-String -Separator "`n") + } + + if ($problems.Count -gt 0) { + throw ($problems.text -join [Environment]::NewLine) + } + + $versions = foreach ($result in @($response.searchResult)) { + foreach ($package in @($result.packages)) { + if ($package.id -ine $packageId) { + continue + } + + if ($package.PSObject.Properties['version']) { + $package.version + } + elseif ($package.PSObject.Properties['latestVersion']) { + $package.latestVersion + } + } + } + $latest = $versions | + Where-Object { + $version = $_ + -not ($excludedVersionPrefixes | Where-Object { + $version.StartsWith($_) + }) + } | + ForEach-Object { + [pscustomobject]@{ + Raw = $_ + Ver = [version]$_ + } + } | + Sort-Object Ver -Descending | + Select-Object -First 1 + return $latest.Raw } - Write-Warning "No official Microsoft.WindowsAppSDK version found on the package source." - return $null + else + { + [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 + $response = Invoke-RestMethod -Uri $sourceFeed -Headers @{ Authorization = "Bearer $token" } -TimeoutSec 30 -ErrorAction Stop + $latest = $null + foreach ($v in $response.versions) { + if ($v -match '-') { continue } # skip prerelease + $excluded = $false + foreach ($p in $excludedVersionPrefixes) { if ($v.StartsWith($p)) { $excluded = $true; break } } + if ($excluded) { continue } + $parsed = $null + if (-not [version]::TryParse($v, [ref]$parsed)) { continue } + if (($null -eq $latest) -or ($parsed -gt $latest.Ver)) { + $latest = [pscustomobject]@{ Raw = $v; Ver = $parsed } + } + } + if ($latest) { + Write-Host "Latest official Microsoft.WindowsAppSDK = $($latest.Raw) (excluded prerelease and $($excludedVersionPrefixes -join ', ')*)" + return $latest.Raw + } + Write-Warning "No official Microsoft.WindowsAppSDK version found on the package source." + return $null + } } catch { Write-Warning "Failed to query the package source for versions: $($_.Exception.Message)" From 56e0510a686dc082fbc2c80b5812cd54742088bb Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Tue, 18 Aug 2026 15:03:42 -0700 Subject: [PATCH 02/11] Add check in Build-VSIX-Local to verify that the templates are included in the VSIX --- .../Build-VSIX-Local.ps1 | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 index 28e2639933..91aba02a4a 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 @@ -420,6 +420,44 @@ function Invoke-MSBuildBuild { } } +function Test-VsixContainsTemplates { + param( + [string]$Path + ) + + Add-Type -AssemblyName System.IO.Compression.FileSystem + + $archive = [System.IO.Compression.ZipFile]::OpenRead($Path) + try { + $projectTemplates = @( + $archive.Entries | Where-Object { + $_.FullName.StartsWith("ProjectTemplates/", [System.StringComparison]::OrdinalIgnoreCase) -and + $_.FullName.EndsWith(".vstemplate", [System.StringComparison]::OrdinalIgnoreCase) + } + ) + $itemTemplates = @( + $archive.Entries | Where-Object { + $_.FullName.StartsWith("ItemTemplates/", [System.StringComparison]::OrdinalIgnoreCase) -and + $_.FullName.EndsWith(".vstemplate", [System.StringComparison]::OrdinalIgnoreCase) + } + ) + + if ($projectTemplates.Count -eq 0 -or $itemTemplates.Count -eq 0) { + Write-Err "VSIX template validation failed: $Path" + Write-Err " Project templates: $($projectTemplates.Count)" + Write-Err " Item templates : $($itemTemplates.Count)" + Write-Err "The selected Visual Studio/MSBuild toolset may not support packaging these templates." + return $false + } + + Write-Step "Verified templates in $($archive.Entries.Count)-entry VSIX: $($projectTemplates.Count) project, $($itemTemplates.Count) item" + return $true + } + finally { + $archive.Dispose() + } +} + function Copy-VsixOutput { param( [string]$DeploymentType @@ -446,6 +484,10 @@ function Copy-VsixOutput { foreach ($vsix in $vsixFiles) { if (-not $seen.ContainsKey($vsix.Name)) { $seen[$vsix.Name] = $vsix + if (-not (Test-VsixContainsTemplates -Path $vsix.FullName)) { + exit 1 + } + # Rename to include version: WindowsAppSDK.Cs.Extension.Dev17.Component.vsix # -> WindowsAppSDK.Cs.Extension.Dev17.Component.99.2026.0416.1640.vsix $newName = $vsix.BaseName + ".$OptionalVSIXVersion.vsix" From 6217dde2dfa74763e68cf890bdfa672ec82abbf9 Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 19 Aug 2026 13:01:00 -0700 Subject: [PATCH 03/11] Add MsBuild parameter to build and install VSIX scripts --- .../build-local-VSIX-package/Build-VSIX-Local.ps1 | 12 ++++++++++-- .../build-install-localdev-vsix.ps1 | 11 +++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 index 91aba02a4a..7da29a9a4b 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 @@ -49,6 +49,10 @@ .PARAMETER SkipRestore Skip NuGet restore (useful if you've already restored). +.PARAMETER VsVersion + Visual Studio version to target for MSBuild. Default: 17 (Visual Studio 2022). + Set to 18 for Visual Studio 2026. + .EXAMPLE .\Build-VSIX-Local.ps1 # Build the LocalDev VSIX (default). Then install with .\Install-LocalDev-VSIX.ps1 @@ -82,7 +86,10 @@ param( [string]$OptionalVSIXVersion = "", - [switch]$SkipRestore + [switch]$SkipRestore, + + [ValidateSet(17, 18)] + [double]$MsBuildVersion = 17 ) Set-StrictMode -Version 2.0 @@ -122,7 +129,8 @@ function Find-MSBuild { exit 1 } - $msbuildPath = & $vswherePath -latest -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" 2>$null | Select-Object -First 1 + $range = '[{0},{1})' -f $MsBuildVersion, ($MsBuildVersion + 1) + $msbuildPath = & $vswherePath -version $range -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" 2>$null | Select-Object -First 1 if (-not $msbuildPath -or -not (Test-Path $msbuildPath)) { Write-Err "MSBuild.exe not found. Please install Visual Studio 2022+ with the '.NET desktop development' workload." exit 1 diff --git a/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 index 124566d1d7..97fd602f08 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/build-install-localdev-vsix.ps1 @@ -26,6 +26,10 @@ .PARAMETER UninstallFirst Run VSIXInstaller /uninstall before installing for a clean reinstall. +.PARAMETER MsBuildVersion + Visual Studio version to target for MSBuild. Default: 17 (Visual Studio 2022). + Set to 18 for Visual Studio 2026. + .EXAMPLE .\build-install-localdev-vsix.ps1 # Build + install LocalDev C# + C++ to all VS 17+. @@ -44,7 +48,10 @@ param( [string]$VsVersionRange = '[17.0,)', - [switch]$UninstallFirst + [switch]$UninstallFirst, + + [ValidateSet(17, 18)] + [double]$MsBuildVersion = 17 ) Set-StrictMode -Version 2.0 @@ -86,7 +93,7 @@ if ($SkipBuild) { } Push-Location $scriptDir try { - & $buildScript -Deployment LocalDev + & $buildScript -Deployment LocalDev -MsBuildVersion $MsBuildVersion if ($LASTEXITCODE -ne 0) { Write-Err "Build-VSIX-Local.ps1 exited with code $LASTEXITCODE" exit $LASTEXITCODE From 6295b1bc7a993fd3b21b5c8349351d8e3068530f Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 19 Aug 2026 13:01:34 -0700 Subject: [PATCH 04/11] Set WindowsAppSDkVersion, WindowsSdkBuildToolsVersion,and WindowsSdkBuildToolsWinAppVersion to {name}$ (parent template parameter) instead of project template parameter --- .../CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj | 6 +++--- .../PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj index 335a7f49ba..121711f2cd 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/BlankApp/ProjectTemplate.csproj @@ -21,9 +21,9 @@ - - - + + + diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate index 0f22e1f822..b3423a5bb6 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate @@ -26,6 +26,9 @@ + + + WapProj\WinUI.Desktop.Cs.WapProj.vstemplate From 125f7ec1ee08b7944e11f5435248a7d7b99f73ac Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 19 Aug 2026 15:35:58 -0700 Subject: [PATCH 05/11] Move the Windows platform selection wizard from the Wapproj.vstemplate to the PackagedApp.vstemplate --- .../CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj | 8 ++++---- .../WapProj/WinUI.Desktop.Cs.WapProj.vstemplate | 10 ---------- .../WinUI.Desktop.Cs.PackagedApp.vstemplate | 10 ++++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj index 4f99481659..700188c0c7 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WapProjTemplate.wapproj @@ -42,11 +42,11 @@ $guid1$ - $targetplatformversion$ - $targetplatformminversion$ + $ext_targetplatformversion$ + $ext_targetplatformminversion$ $ext_DotNetVersion$-windows$(TargetPlatformVersion);$(AssetTargetFallback) $currentuiculturename$ - $if$($includeKeyFile$==true) + $if$($ext_includeKeyFile$==true) $projectname$_TemporaryKey.pfx $endif$ false @@ -56,7 +56,7 @@ Designer - $if$($includeKeyFile$==true) + $if$($ext_includeKeyFile$==true) $endif$ diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WinUI.Desktop.Cs.WapProj.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WinUI.Desktop.Cs.WapProj.vstemplate index 5520e98b34..21850532c4 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WinUI.Desktop.Cs.WapProj.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WapProj/WinUI.Desktop.Cs.WapProj.vstemplate @@ -40,19 +40,9 @@ Wide310x150Logo.scale-200.png - - Microsoft.VisualStudio.Universal.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.VisualStudio.Universal.TemplateWizards.PlatformVersion.Wizard - Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard - - 10.0.17763.0 - true - true - true - diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate index b3423a5bb6..a559a4ed99 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CSharp/PackagedApp/WinUI.Desktop.Cs.PackagedApp.vstemplate @@ -35,4 +35,14 @@ BlankApp\WinUI.Desktop.Cs.BlankApp.vstemplate + + Microsoft.VisualStudio.Universal.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.Universal.TemplateWizards.PlatformVersion.Wizard + + + 10.0.17763.0 + true + true + true + From d881bf8f7450142388e92fe984bbea58966f8112 Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 19 Aug 2026 16:17:01 -0700 Subject: [PATCH 06/11] Move the Windows platform selection wizard from the C++ Wapproj.vstemplate to the PackagedApp.vstemplate --- .../PackagedApp/WapProj/WapProjTemplate.wapproj | 8 ++++---- .../WinUI.Desktop.CppWinRT.WapProj.vstemplate | 13 ------------- .../WinUI.Desktop.CppWinRT.PackagedApp.vstemplate | 15 ++++++++++++++- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj index de6d40d79d..7036f3c298 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WapProjTemplate.wapproj @@ -43,10 +43,10 @@ $guid1$ - $targetplatformversion$ - $targetplatformminversion$ + $ext_targetplatformversion$ + $ext_targetplatformminversion$ $currentuiculturename$ - $if$($includeKeyFile$==true) + $if$($ext_includeKeyFile$==true) $projectname$_TemporaryKey.pfx $endif$ false @@ -56,7 +56,7 @@ Designer - $if$($includeKeyFile$==true) + $if$($ext_includeKeyFile$==true) $endif$ diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WinUI.Desktop.CppWinRT.WapProj.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WinUI.Desktop.CppWinRT.WapProj.vstemplate index 1e8db89c9d..88b1740baa 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WinUI.Desktop.CppWinRT.WapProj.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/WinUI.Desktop.CppWinRT.WapProj.vstemplate @@ -39,21 +39,8 @@ - - Microsoft.VisualStudio.Universal.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.VisualStudio.Universal.TemplateWizards.PlatformVersion.Wizard - - - - Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard - WindowsAppSDK.Cpp.Extension.Dev17, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null WindowsAppSDK.TemplateUtilities.NuGetPackageInstaller - - 10.0.17763.0 - true - diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate index 08c4b03884..5ab8a9dfb2 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WinUI.Desktop.CppWinRT.PackagedApp.vstemplate @@ -27,5 +27,18 @@ WapProj\WinUI.Desktop.CppWinRT.WapProj.vstemplate BlankApp\WinUI.Desktop.CppWinRT.BlankApp.vstemplate - + + + + Microsoft.VisualStudio.WinRT.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.WinRT.TemplateWizards.UpdatePublisherInManifestWizard + + + Microsoft.VisualStudio.Universal.TemplateWizards, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + Microsoft.VisualStudio.Universal.TemplateWizards.PlatformVersion.Wizard + + + 10.0.17763.0 + true + From f7ea7dfee8756e0db733737d181fa01d5280a4ef Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Fri, 21 Aug 2026 08:48:19 -0700 Subject: [PATCH 07/11] Substitute publisher name from parent project in C++ wapproj Package.appxmanifest --- .../CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest index 6dfdf482cb..3ee00ff8e4 100644 --- a/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest +++ b/dev/Templates/Source/ProjectTemplates/Desktop/CppWinRT/PackagedApp/WapProj/Package-managed.appxmanifest @@ -11,7 +11,7 @@ From 7b1531139b93991cf46ff230af706de64e8a163a Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 26 Aug 2026 10:55:14 -0700 Subject: [PATCH 08/11] Rename VsVersion in help guide to MsBuildVersion --- .../VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 index 7da29a9a4b..028005dcdb 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 @@ -49,7 +49,7 @@ .PARAMETER SkipRestore Skip NuGet restore (useful if you've already restored). -.PARAMETER VsVersion +.PARAMETER MsBuildVersion Visual Studio version to target for MSBuild. Default: 17 (Visual Studio 2022). Set to 18 for Visual Studio 2026. From 7dcb9ce7a4e0a9e03ee86a34f92b9ed1073098bb Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 26 Aug 2026 10:58:38 -0700 Subject: [PATCH 09/11] Update missing MSBuild error message to include the MsBuildVersion selected in the script --- .../VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 index 028005dcdb..21d54645b1 100644 --- a/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 +++ b/dev/Templates/VSIX/build-local-VSIX-package/Build-VSIX-Local.ps1 @@ -132,7 +132,7 @@ function Find-MSBuild { $range = '[{0},{1})' -f $MsBuildVersion, ($MsBuildVersion + 1) $msbuildPath = & $vswherePath -version $range -requires Microsoft.Component.MSBuild -find "MSBuild\**\Bin\MSBuild.exe" 2>$null | Select-Object -First 1 if (-not $msbuildPath -or -not (Test-Path $msbuildPath)) { - Write-Err "MSBuild.exe not found. Please install Visual Studio 2022+ with the '.NET desktop development' workload." + Write-Err "MSBuild.exe not found. Please install Visual Studio $MsBuildVersion with the '.NET desktop development' workload." exit 1 } From f2aba5c73a98cdce7ae7761dc8ddab53817ca4fd Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 26 Aug 2026 11:04:20 -0700 Subject: [PATCH 10/11] Remove duplicate problems.Count newline --- dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 index 2ce3d4f717..2515352f8c 100644 --- a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 +++ b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 @@ -489,10 +489,6 @@ function Get-LatestOfficialWasdkVersion { throw ($problems | ForEach-Object { $_.text } | Join-String -Separator "`n") } - if ($problems.Count -gt 0) { - throw ($problems.text -join [Environment]::NewLine) - } - $versions = foreach ($result in @($response.searchResult)) { foreach ($package in @($result.packages)) { if ($package.id -ine $packageId) { From f1eb3306b7be812bd7ada15ebfd32cf40947a1d1 Mon Sep 17 00:00:00 2001 From: Lauren Ciha Date: Wed, 26 Aug 2026 14:16:22 -0700 Subject: [PATCH 11/11] Remove extra excludedVersionPrefixes in Test-DotnetNewTemplates.ps1 --- dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 index 2515352f8c..2be6926f3f 100644 --- a/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 +++ b/dev/Templates/Dotnet/Test-DotnetNewTemplates.ps1 @@ -456,11 +456,9 @@ function Get-LatestOfficialWasdkVersion { try { # SYSTEM_ACCESSTOKEN is a pipeline variable. Use nuget CLI when running outside of pipeline runs if ([string]::IsNullOrWhiteSpace($token)) { - Write-Warning "SYSTEM_ACCESSTOKEN is not set; cannot query package source for latest official Microsoft.WindowsAppSDK version." - Write-Host "Using NuGet CLI instead" + Write-Warning "SYSTEM_ACCESSTOKEN is not set; cannot query package source for latest official Microsoft.WindowsAppSDK version. Using NuGet CLI instead" $packageId = 'Microsoft.WindowsAppSDK' $sourceFeed = 'https://microsoft.pkgs.visualstudio.com/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json' - $excludedVersionPrefixes = @('1.0.', '1.1.') $json = & dotnet package search $packageId ` --source $sourceFeed ` --exact-match `