Skip to content

Commit

Permalink
Fix build script to work with VS2019 (#641)
Browse files Browse the repository at this point in the history
* Fix build script to work with VS2019

The main change is to try to find msbuild using the 'Current' version
instead of the '15.0' version.  The MSBuild team has stated that
'Current' will be used going forward to avoid a breaking change to the
path when the version revs.

Also necessary in this change was to drop the /toolsVersion flag from
msbuild.  It was passing 15.0 but that tools version is not recognized in the
current MSBuild.

Lastly, added the UWP.Support component as a required build component.
When the build targets an instance of VS missing this feature, the build
will fail when trying to find Microsoft.Windows.UI.Xaml.CSharp.Targets.

* Handle when Resolve-Path throws if VS2019 is not present
  • Loading branch information
jimmylewis authored and jayaranigarg committed Oct 17, 2019
1 parent 67c9f43 commit 2166170
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
4 changes: 2 additions & 2 deletions scripts/Build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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'."
Expand Down
16 changes: 14 additions & 2 deletions scripts/common.lib.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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')
{
Expand Down

0 comments on commit 2166170

Please sign in to comment.