|
@@ -9,6 +9,25 @@
|
|
|
|
|
|
|
|
. $PSScriptRoot\util.ps1
|
|
. $PSScriptRoot\util.ps1
|
|
|
|
|
|
|
|
|
|
+# helper to try to locate a single version installed under "Microsoft Visual Studio" instead of under "MSBuild"
|
|
|
|
|
+function Locate-MSBuild-Modern-Version([string]$product, [string]$version) {
|
|
|
|
|
+ $msbuildTemplate = "{0}\Microsoft Visual Studio\2017\{1}\MSBuild\{2}\Bin\{3}\msbuild.exe"
|
|
|
|
|
+ $msbuildUnscoped = "{0}\Microsoft Visual Studio\2017\{1}\MSBuild\{2}\Bin\msbuild.exe"
|
|
|
|
|
+ # e.g. C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe
|
|
|
|
|
+
|
|
|
|
|
+ $msbuildExe = $msbuildTemplate -f "${Env:ProgramFiles}", $product, $version, "x86"
|
|
|
|
|
+ $_ = WriteMessage "Trying `"$msbuildExe`""
|
|
|
|
|
+ if (Test-Path $msbuildExe) { return $msbuildExe }
|
|
|
|
|
+
|
|
|
|
|
+ $msbuildExe = $msbuildUnscoped -f "${Env:ProgramFiles(x86)}", $product, $version
|
|
|
|
|
+ $_ = WriteMessage "Trying `"$msbuildExe`""
|
|
|
|
|
+ if (Test-Path $msbuildExe) { return $msbuildExe }
|
|
|
|
|
+
|
|
|
|
|
+ $msbuildExe = $msbuildTemplate -f "${Env:ProgramFiles(x86)}", $product, $version, "amd64"
|
|
|
|
|
+ $_ = WriteMessage "Trying `"$msbuildExe`""
|
|
|
|
|
+ if (Test-Path $msbuildExe) { return $msbuildExe }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
# helper to try to locate a single version
|
|
# helper to try to locate a single version
|
|
|
function Locate-MSBuild-Version([string]$version) {
|
|
function Locate-MSBuild-Version([string]$version) {
|
|
|
$msbuildTemplate = "{0}\msbuild\{1}\Bin\{2}\msbuild.exe"
|
|
$msbuildTemplate = "{0}\msbuild\{1}\Bin\{2}\msbuild.exe"
|
|
@@ -33,6 +52,16 @@ function Locate-MSBuild() {
|
|
|
$msbuildExe = "msbuild.exe"
|
|
$msbuildExe = "msbuild.exe"
|
|
|
if (Get-Command $msbuildExe -ErrorAction SilentlyContinue) { return $msbuildExe }
|
|
if (Get-Command $msbuildExe -ErrorAction SilentlyContinue) { return $msbuildExe }
|
|
|
|
|
|
|
|
|
|
+ $_ = WriteMessage "msbuild.exe not found on PATH, trying Dev15..."
|
|
|
|
|
+
|
|
|
|
|
+ $msbuildExe = Locate-MSBuild-Modern-Version -product "Enterprise" -version "15.0"
|
|
|
|
|
+ if ($msbuildExe -and (Test-Path $msbuildExe)) {
|
|
|
|
|
+ $_ = WriteMessage "Found `"$msbuildExe`""
|
|
|
|
|
+ return $msbuildExe
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $_ = WriteMessage "Dev15 not found, trying Dev14..."
|
|
|
|
|
+
|
|
|
$msbuildExe = Locate-MSBuild-Version("14.0")
|
|
$msbuildExe = Locate-MSBuild-Version("14.0")
|
|
|
if ($msbuildExe -and (Test-Path $msbuildExe)) {
|
|
if ($msbuildExe -and (Test-Path $msbuildExe)) {
|
|
|
$_ = WriteMessage "Found `"$msbuildExe`""
|
|
$_ = WriteMessage "Found `"$msbuildExe`""
|