ps/Modules/.build/Get-MSBuildPath.ps1
2023-05-30 22:51:22 -07:00

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
}
}