| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- [CmdletBinding()]
 
- Param(
 
-     [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
 
-     [string[]]$BuildArguments
 
- )
 
- Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
 
- Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
 
- $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
 
- ###########################################################################
 
- # CONFIGURATION
 
- ###########################################################################
 
- $BuildProjectFile = "$PSScriptRoot\nukebuild\_build.csproj"
 
- $TempDirectory = "$PSScriptRoot\\.nuke\temp"
 
- $DotNetGlobalFile = "$PSScriptRoot\\global.json"
 
- $DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
 
- $DotNetChannel = "Current"
 
- $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
 
- $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
 
- $env:DOTNET_MULTILEVEL_LOOKUP = 0
 
- ###########################################################################
 
- # EXECUTION
 
- ###########################################################################
 
- function ExecSafe([scriptblock] $cmd) {
 
-     & $cmd
 
-     if ($LASTEXITCODE) { exit $LASTEXITCODE }
 
- }
 
- # If dotnet CLI is installed globally and it matches requested version, use for execution
 
- if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
 
-      $(dotnet --version) -and $LASTEXITCODE -eq 0) {
 
-     $env:DOTNET_EXE = (Get-Command "dotnet").Path
 
- }
 
- else {
 
-     # Download install script
 
-     $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
 
-     New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
 
-     [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
 
-     (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
 
-     # If global.json exists, load expected version
 
-     if (Test-Path $DotNetGlobalFile) {
 
-         $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
 
-         if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
 
-             $DotNetVersion = $DotNetGlobal.sdk.version
 
-         }
 
-     }
 
-     # Install by channel or version
 
-     $DotNetDirectory = "$TempDirectory\dotnet-win"
 
-     if (!(Test-Path variable:DotNetVersion)) {
 
-         ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
 
-     } else {
 
-         ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
 
-     }
 
-     $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
 
- }
 
- Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)"
 
- ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
 
- ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }
 
 
  |