How do I call Visual Studio 2017 RC's version of MSBuild from a BAT file?

后端 未结 9 829
暖寄归人
暖寄归人 2020-12-04 19:19

Earlier versions of MSBuild could be found here: %programfiles(x86)%\\msbuild\\\\bin\\msbuild.exe.

But for Visual Studio 2017RC the path

9条回答
  •  南方客
    南方客 (楼主)
    2020-12-04 20:08

    Posting this for folks still trying to locate the newest version of msbuild on a machine and fall back to an older one if that is availble instead. I find this snippet of powershell does the trick, which can easily be invoked from a bat file.

    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"
    }
    
    
    $msbuildPath = Find-MsBuild 2017
    

提交回复
热议问题