42 lines
2.2 KiB
PowerShell
42 lines
2.2 KiB
PowerShell
|
Function Get-MSBuildPath {
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Get the local machine MSBuild path in a way that it can be easily consumed
|
||
|
|
||
|
.EXAMPLE
|
||
|
Get-MSBuildPath
|
||
|
|
||
|
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
|
||
|
#>
|
||
|
[CmdletBinding()]
|
||
|
Param()
|
||
|
process {
|
||
|
if ($script:isSet_GetMSBuildPath) {
|
||
|
return $script:value_GetMSBuildPath
|
||
|
}
|
||
|
$msBuildPath = ""
|
||
|
if (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe") {
|
||
|
$msBuildPath = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe"
|
||
|
} elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe") {
|
||
|
$msBuildPath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"
|
||
|
} elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe") {
|
||
|
$msBuildPath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"
|
||
|
} elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe") {
|
||
|
$msBuildPath = "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe"
|
||
|
} elseif (Test-Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe") {
|
||
|
$msBuildPath = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"
|
||
|
} else {
|
||
|
$buildVersion = (Get-ChildItem HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions -Name | Measure -Maximum).Maximum
|
||
|
$MSBuildVersionRegEntry = (Get-ItemProperty -LiteralPath "HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\$($buildVersion).0\" -Name "msbuild.exe")
|
||
|
if ($null -ne $MSBuildVersionRegEntry) {
|
||
|
$msBuildPath = $MSBuildVersionRegEntry."msbuild.exe"
|
||
|
}
|
||
|
}
|
||
|
if (!([string]::IsNullOrEmpty($msBuildPath))) {
|
||
|
$script:isSet_GetMSBuildPath = $true
|
||
|
$script:value_GetMSBuildPath = $msBuildPath
|
||
|
}
|
||
|
return $msBuildPath
|
||
|
}
|
||
|
}
|