mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 09:46:54 +02:00
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Fix the `build.ps1` that does not work well with `-RestoreOnly` switch. Also there is `.slnf` now and the build script should support it. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist - [ ] Closes: #xxx <!-- - [ ] Closes: #yyy (add separate lines for additional resolved issues) --> - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [ ] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx <!-- Provide a more detailed description of the PR, other things fixed, or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
105 lines
3.7 KiB
PowerShell
105 lines
3.7 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Light-weight wrapper to build local projects (solutions/projects) in the current working directory using helpers in build-common.ps1.
|
|
|
|
.DESCRIPTION
|
|
This script is intended for quick local builds. It dot-sources `build-common.ps1` and calls `BuildProjectsInDirectory` against the current directory. Use `-RestoreOnly` to only restore packages for local projects. If `-Platform` is omitted the script attempts to auto-detect the host platform.
|
|
|
|
.PARAMETER Platform
|
|
Target platform (e.g., 'x64', 'arm64'). If omitted the script will try to detect the host platform automatically.
|
|
|
|
.PARAMETER Configuration
|
|
Build configuration (e.g., 'Debug', 'Release'). Default: 'Debug'.
|
|
|
|
.PARAMETER Path
|
|
Optional directory path containing projects to build. If not specified, uses the current working directory.
|
|
|
|
.PARAMETER RestoreOnly
|
|
If specified, only perform package restore for local projects and skip the build steps for a solution file (i.e. .sln).
|
|
|
|
.PARAMETER ExtraArgs
|
|
Any remaining, positional arguments passed to the script are forwarded to MSBuild as additional arguments (e.g., '/p:CIBuild=true').
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1
|
|
Builds any .sln/.csproj/.vcxproj in the current working directory (auto-detects Platform).
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -Platform x64 -Configuration Release -Path "C:\MyProject\src"
|
|
Builds local projects in the specified directory for x64 Release.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -Platform x64 -Configuration Release
|
|
Builds local projects for x64 Release.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 '/p:CIBuild=true' '/p:SomeOther=Value'
|
|
Pass additional MSBuild arguments; these are forwarded to the underlying msbuild calls.
|
|
|
|
.EXAMPLE
|
|
.\tools\build\build.ps1 -RestoreOnly '/p:CIBuild=true'
|
|
Only restores packages for local projects; ExtraArgs still forwarded to msbuild's restore phase.
|
|
|
|
.NOTES
|
|
- This file expects `build-common.ps1` to be located in the same folder and dot-sources it to load helper functions.
|
|
- ExtraArgs are captured using PowerShell's ValueFromRemainingArguments and joined before being passed to the helpers.
|
|
#>
|
|
|
|
param (
|
|
[string]$Platform = '',
|
|
[string]$Configuration = 'Debug',
|
|
[string]$Path = '',
|
|
[switch]$RestoreOnly,
|
|
[Parameter(ValueFromRemainingArguments=$true)]
|
|
[string[]]$ExtraArgs
|
|
)
|
|
|
|
. "$PSScriptRoot\build-common.ps1"
|
|
|
|
# Initialize Visual Studio dev environment
|
|
if (-not (Ensure-VsDevEnvironment)) { exit 1 }
|
|
|
|
# If user passed MSBuild-style args (e.g. './build.ps1 /p:CIBuild=true'),
|
|
# those will bind to $Platform/$Configuration; detect those and move them to ExtraArgs.
|
|
$positionalExtra = @()
|
|
if ($Platform -and $Platform -match '^[\/-]') {
|
|
$positionalExtra += $Platform
|
|
$Platform = ''
|
|
}
|
|
if ($Configuration -and $Configuration -match '^[\/-]') {
|
|
$positionalExtra += $Configuration
|
|
$Configuration = 'Debug'
|
|
}
|
|
if ($positionalExtra.Count -gt 0) {
|
|
if (-not $ExtraArgs) { $ExtraArgs = @() }
|
|
$ExtraArgs = $positionalExtra + $ExtraArgs
|
|
}
|
|
|
|
# Auto-detect platform when not provided
|
|
if (-not $Platform -or $Platform -eq '') {
|
|
try {
|
|
$Platform = Get-DefaultPlatform
|
|
Write-Host ("[AUTO-PLATFORM] Detected platform: {0}" -f $Platform)
|
|
} catch {
|
|
Write-Warning "Failed to auto-detect platform; defaulting to x64"
|
|
$Platform = 'x64'
|
|
}
|
|
}
|
|
|
|
$cwd = if ($Path -ne '') {
|
|
(Resolve-Path $Path).ProviderPath
|
|
} else {
|
|
(Get-Location).ProviderPath
|
|
}
|
|
$extraArgsString = $null
|
|
if ($ExtraArgs -and $ExtraArgs.Count -gt 0) { $extraArgsString = ($ExtraArgs -join ' ') }
|
|
|
|
$built = BuildProjectsInDirectory -DirectoryPath $cwd -ExtraArgs $extraArgsString -Platform $Platform -Configuration $Configuration -RestoreOnly:$RestoreOnly
|
|
if ($built) {
|
|
Write-Host "[BUILD] Local projects built; exiting."
|
|
exit 0
|
|
} else {
|
|
Write-Host "[BUILD] No local projects found in $cwd"
|
|
exit 0
|
|
}
|