diff --git a/scripts/Build.ps1 b/scripts/Build.ps1 index c651b07404..3123bab535 100644 --- a/scripts/Build.ps1 +++ b/scripts/Build.ps1 @@ -223,8 +223,8 @@ function Invoke-Build([string] $solution, $hasVsixExtension = "false") $solutionFailureLog = Join-Path -path $solutionDir -childPath "msbuild.err" Write-Log " Building $solution..." - Write-Verbose "$msbuild /t:$Target /p:Configuration=$configuration /tv:$msbuildVersion /v:m /flp1:Summary`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionSummaryLog /flp2:WarningsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionWarningLog /flp3:ErrorsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionFailureLog /p:IsLocalizedBuild=$TFB_IsLocalizedBuild /p:UpdateXlf=$TFB_UpdateXlf /p:BuildVersion=$TFB_BuildVersion $solutionPath" - & $msbuild /t:$Target /p:Configuration=$configuration /tv:$msbuildVersion /v:m /flp1:Summary`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionSummaryLog /flp2:WarningsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionWarningLog /flp3:ErrorsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionFailureLog /p:IsLocalizedBuild=$TFB_IsLocalizedBuild /p:UpdateXlf=$TFB_UpdateXlf /p:BuildVersion=$TFB_BuildVersion $solutionPath + Write-Verbose "$msbuild /t:$Target /p:Configuration=$configuration /v:m /flp1:Summary`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionSummaryLog /flp2:WarningsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionWarningLog /flp3:ErrorsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionFailureLog /p:IsLocalizedBuild=$TFB_IsLocalizedBuild /p:UpdateXlf=$TFB_UpdateXlf /p:BuildVersion=$TFB_BuildVersion $solutionPath" + & $msbuild /t:$Target /p:Configuration=$configuration /v:m /flp1:Summary`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionSummaryLog /flp2:WarningsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionWarningLog /flp3:ErrorsOnly`;Verbosity=diagnostic`;Encoding=UTF-8`;LogFile=$solutionFailureLog /p:IsLocalizedBuild=$TFB_IsLocalizedBuild /p:UpdateXlf=$TFB_UpdateXlf /p:BuildVersion=$TFB_BuildVersion $solutionPath if ($lastExitCode -ne 0) { throw "Build failed with an exit code of '$lastExitCode'." diff --git a/scripts/common.lib.ps1 b/scripts/common.lib.ps1 index 0a98264422..4afb5e8a21 100644 --- a/scripts/common.lib.ps1 +++ b/scripts/common.lib.ps1 @@ -54,8 +54,19 @@ function Locate-MSBuild($hasVsixExtension = "false") { function Locate-MSBuildPath($hasVsixExtension = "false") { $vsInstallPath = Locate-VsInstallPath -hasVsixExtension $hasVsixExtension - $msbuildPath = Join-Path -path $vsInstallPath -childPath "MSBuild\$msbuildVersion\Bin" - return Resolve-Path -path $msbuildPath + + # first try to find the VS2019+ path + try { + $msbuildPath = Join-Path -path $vsInstallPath -childPath "MSBuild\Current\Bin" + $msbuildPath = Resolve-Path $msbuildPath + } + catch { + # Resolve-Path throws if the path does not exist, so use the VS2017 path as a fallback + $msbuildPath = Join-Path -path $vsInstallPath -childPath "MSBuild\$msbuildVersion\Bin" + $msbuildPath = Resolve-Path $msbuildPath + } + + return $msbuildPath } function Locate-NuGet { @@ -117,6 +128,7 @@ function Locate-VsInstallPath($hasVsixExtension ="false"){ $requiredPackageIds += "Microsoft.Component.MSBuild" $requiredPackageIds += "Microsoft.Net.Component.4.6.TargetingPack" + $requiredPackageIds += "Microsoft.VisualStudio.Windows.Build" if($hasVsixExtension -eq 'true') {