Files
wehub-resource-sync 79031da543
Spell checking / Check Spelling (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Publish Dev Docs Website / build (push) Failing after 1s
Publish Dev Docs Website / deploy (push) Has been skipped
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:16:02 +08:00

85 lines
2.5 KiB
PowerShell

<#
.SYNOPSIS
Cleans PowerToys build artifacts to resolve build errors.
.DESCRIPTION
Use this script when you encounter build errors about missing image files or corrupted
build state. It removes build output folders and optionally runs MSBuild Clean.
.PARAMETER SkipMSBuildClean
Skip running MSBuild Clean target, only delete folders.
.EXAMPLE
.\tools\build\clean-artifacts.ps1
.EXAMPLE
.\tools\build\clean-artifacts.ps1 -SkipMSBuildClean
#>
param (
[switch]$SkipMSBuildClean
)
$ErrorActionPreference = 'Continue'
$scriptDir = $PSScriptRoot
$repoRoot = (Resolve-Path "$scriptDir\..\..").Path
Write-Host "Cleaning build artifacts..."
Write-Host ""
# Run MSBuild Clean
if (-not $SkipMSBuildClean) {
$vsWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (Test-Path $vsWhere) {
$vsPath = & $vsWhere -latest -products * -requires Microsoft.Component.MSBuild -property installationPath
if ($vsPath) {
$msbuildPath = Join-Path $vsPath "MSBuild\Current\Bin\MSBuild.exe"
if (Test-Path $msbuildPath) {
$solutionFile = Join-Path $repoRoot "PowerToys.sln"
if (-not (Test-Path $solutionFile)) {
$solutionFile = Join-Path $repoRoot "PowerToys.slnx"
}
if (Test-Path $solutionFile) {
Write-Host " Running MSBuild Clean..."
foreach ($plat in @('x64', 'ARM64')) {
foreach ($config in @('Debug', 'Release')) {
& $msbuildPath $solutionFile /t:Clean /p:Platform=$plat /p:Configuration=$config /verbosity:quiet 2>&1 | Out-Null
}
}
Write-Host " Done."
}
}
}
}
}
# Delete build folders
$folders = @('x64', 'ARM64', 'Debug', 'Release', 'packages')
$deleted = @()
foreach ($folder in $folders) {
$fullPath = Join-Path $repoRoot $folder
if (Test-Path $fullPath) {
Write-Host " Removing $folder/"
try {
Remove-Item -Path $fullPath -Recurse -Force -ErrorAction Stop
$deleted += $folder
} catch {
Write-Host " Failed to remove $folder/: $_"
}
}
}
Write-Host ""
if ($deleted.Count -gt 0) {
Write-Host "Removed: $($deleted -join ', ')"
} else {
Write-Host "No build folders found to remove."
}
Write-Host ""
Write-Host "To rebuild, run:"
Write-Host " msbuild -restore -p:RestorePackagesConfig=true -p:Platform=x64 -m PowerToys.slnx"