Feature Request - Set the installation dir as an environment variable
- Dominant language
- C#
- Stars
- 5.5k
- Forks
- 1.5k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 133
Description
### Description
Setting up any CI with projects based on msbuild has become a tad complicated as some of us want to be able to configure our build scripts without writing hard coded paths to find msbuild.
This problem has inspired multiple blog pots "how to find installed version of msbuild"
I think a very simple solution is to add an environment variable once the installation has finished so we can write scripts such as:
### Proposal
```sh
$MSBUILD_HOME/bin/msbuild.exe ./mysolution.sln
```
### Current workaround to find msbuild
As opposed to having to write this code in powershell:
```powershell
Function Find-MsBuild([int] $MaxVersion = 2017)
{
$agentPath = "$Env:programfiles (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\msbuild.exe"
$devPath = "$Env:programfiles (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe"
$proPath = "$Env:programfiles (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe"
$communityPath = "$Env:programfiles (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe"
$fallback2015Path = "${Env:ProgramFiles(x86)}\MSBuild\14.0\Bin\MSBuild.exe"
$fallback2013Path = "${Env:ProgramFiles(x86)}\MSBuild\12.0\Bin\MSBuild.exe"
$fallbackPath = "C:\Windows\Microsoft.NET\Framework\v4.0.30319"
If ((2017 -le $MaxVersion) -And (Test-Path $agentPath)) { return $agentPath }
If ((2017 -le $MaxVersion) -And (Test-Path $devPath)) { return $devPath }
If ((2017 -le $MaxVersion) -And (Test-Path $proPath)) { return $proPath }
If ((2017 -le $MaxVersion) -And (Test-Path $communityPath)) { return $communityPath }
If ((2015 -le $MaxVersion) -And (Test-Path $fallback2015Path)) { return $fallback2015Path }
If ((2013 -le $MaxVersion) -And (Test-Path $fallback2013Path)) { return $fallback2013Path }
If (Test-Path $fallbackPath) { return $fallbackPath }
throw "Yikes - Unable to find msbuild"
}```
```powershell
PS C:\> Find-MsBuild | ./mysolution.sln
```
_(just in case, I got no idea if the last powershell invocation works... but I do think that is unmaintainable for a long time)_
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.