4f7697a2da
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com> Co-authored-by: Matt Mitchell (.NET) <mmitche@microsoft.com>
172 lines
6.1 KiB
PowerShell
172 lines
6.1 KiB
PowerShell
[CmdletBinding(PositionalBinding=$false)]
|
|
Param(
|
|
[string][Alias('c')]$configuration = "Debug",
|
|
[string]$platform = $null,
|
|
[string] $projects,
|
|
[string][Alias('v')]$verbosity = "minimal",
|
|
[string] $msbuildEngine = $null,
|
|
[bool] $warnAsError = $true,
|
|
[bool] $nodeReuse = $true,
|
|
[switch][Alias('r')]$restore,
|
|
[switch] $deployDeps,
|
|
[switch][Alias('b')]$build,
|
|
[switch] $rebuild,
|
|
[switch] $deploy,
|
|
[switch][Alias('t')]$test,
|
|
[switch] $integrationTest,
|
|
[switch] $performanceTest,
|
|
[switch] $sign,
|
|
[switch] $pack,
|
|
[switch] $publish,
|
|
[switch] $clean,
|
|
[switch] $verticalBuild,
|
|
[switch][Alias('pb')]$productBuild,
|
|
[switch][Alias('bl')]$binaryLog,
|
|
[switch][Alias('nobl')]$excludeCIBinarylog,
|
|
[switch] $ci,
|
|
[switch] $prepareMachine,
|
|
[string] $runtimeSourceFeed = '',
|
|
[string] $runtimeSourceFeedKey = '',
|
|
[switch] $excludePrereleaseVS,
|
|
[switch] $nativeToolsOnMachine,
|
|
[switch] $help,
|
|
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
|
|
)
|
|
|
|
# Unset 'Platform' environment variable to avoid unwanted collision in InstallDotNetCore.targets file
|
|
# some computer has this env var defined (e.g. Some HP)
|
|
if($env:Platform) {
|
|
$env:Platform=""
|
|
}
|
|
function Print-Usage() {
|
|
Write-Host "Common settings:"
|
|
Write-Host " -configuration <value> Build configuration: 'Debug' or 'Release' (short: -c)"
|
|
Write-Host " -platform <value> Platform configuration: 'x86', 'x64' or any valid Platform value to pass to msbuild"
|
|
Write-Host " -verbosity <value> Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)"
|
|
Write-Host " -binaryLog Output binary log (short: -bl)"
|
|
Write-Host " -help Print help and exit"
|
|
Write-Host ""
|
|
|
|
Write-Host "Actions:"
|
|
Write-Host " -restore Restore dependencies (short: -r)"
|
|
Write-Host " -build Build solution (short: -b)"
|
|
Write-Host " -rebuild Rebuild solution"
|
|
Write-Host " -deploy Deploy built VSIXes"
|
|
Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)"
|
|
Write-Host " -test Run all unit tests in the solution (short: -t)"
|
|
Write-Host " -integrationTest Run all integration tests in the solution"
|
|
Write-Host " -performanceTest Run all performance tests in the solution"
|
|
Write-Host " -pack Package build outputs into NuGet packages and Willow components"
|
|
Write-Host " -sign Sign build outputs"
|
|
Write-Host " -publish Publish artifacts (e.g. symbols)"
|
|
Write-Host " -clean Clean the solution"
|
|
Write-Host " -verticalBuild Run in 'vertical build' infra mode."
|
|
Write-Host " -productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)"
|
|
Write-Host ""
|
|
|
|
Write-Host "Advanced settings:"
|
|
Write-Host " -projects <value> Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)"
|
|
Write-Host " -ci Set when running on CI server"
|
|
Write-Host " -excludeCIBinarylog Don't output binary log (short: -nobl)"
|
|
Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build"
|
|
Write-Host " -warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
|
|
Write-Host " -msbuildEngine <value> Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
|
|
Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio"
|
|
Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
|
|
Write-Host ""
|
|
|
|
Write-Host "Command line arguments not listed above are passed thru to msbuild."
|
|
Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
|
|
}
|
|
|
|
. $PSScriptRoot\tools.ps1
|
|
|
|
function InitializeCustomToolset {
|
|
if (-not $restore) {
|
|
return
|
|
}
|
|
|
|
$script = Join-Path $EngRoot 'restore-toolset.ps1'
|
|
|
|
if (Test-Path $script) {
|
|
. $script
|
|
}
|
|
}
|
|
|
|
function Build {
|
|
$toolsetBuildProj = InitializeToolset
|
|
InitializeCustomToolset
|
|
|
|
$bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
|
|
$platformArg = if ($platform) { "/p:Platform=$platform" } else { '' }
|
|
|
|
if ($projects) {
|
|
# Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons.
|
|
# Explicitly set the type as string[] because otherwise PowerShell would make this char[] if $properties is empty.
|
|
[string[]] $msbuildArgs = $properties
|
|
|
|
# Resolve relative project paths into full paths
|
|
$projects = ($projects.Split(';').ForEach({Resolve-Path $_}) -join ';')
|
|
|
|
$msbuildArgs += "/p:Projects=$projects"
|
|
$properties = $msbuildArgs
|
|
}
|
|
|
|
MSBuild $toolsetBuildProj `
|
|
$bl `
|
|
$platformArg `
|
|
/p:Configuration=$configuration `
|
|
/p:RepoRoot=$RepoRoot `
|
|
/p:Restore=$restore `
|
|
/p:DeployDeps=$deployDeps `
|
|
/p:Build=$build `
|
|
/p:Rebuild=$rebuild `
|
|
/p:Deploy=$deploy `
|
|
/p:Test=$test `
|
|
/p:Pack=$pack `
|
|
/p:DotNetBuildRepo=$($productBuild -or $verticalBuild) `
|
|
/p:ArcadeBuildVertical=$verticalBuild `
|
|
/p:IntegrationTest=$integrationTest `
|
|
/p:PerformanceTest=$performanceTest `
|
|
/p:Sign=$sign `
|
|
/p:Publish=$publish `
|
|
@properties
|
|
}
|
|
|
|
try {
|
|
if ($clean) {
|
|
if (Test-Path $ArtifactsDir) {
|
|
Remove-Item -Recurse -Force $ArtifactsDir
|
|
Write-Host 'Artifacts directory deleted.'
|
|
}
|
|
exit 0
|
|
}
|
|
|
|
if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) {
|
|
Print-Usage
|
|
exit 0
|
|
}
|
|
|
|
if ($ci) {
|
|
if (-not $excludeCIBinarylog) {
|
|
$binaryLog = $true
|
|
}
|
|
$nodeReuse = $false
|
|
}
|
|
|
|
if ($nativeToolsOnMachine) {
|
|
$env:NativeToolsOnMachine = $true
|
|
}
|
|
if ($restore) {
|
|
InitializeNativeTools
|
|
}
|
|
|
|
Build
|
|
}
|
|
catch {
|
|
Write-Host $_.ScriptStackTrace
|
|
Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_
|
|
ExitWithExitCode 1
|
|
}
|
|
|
|
ExitWithExitCode 0
|