我在Powershell中制作了一个构建文件。此构建文件需要引用Visual Studio 2017版本的MSBuild.exe。不幸的是,该文件的路径取决于您安装的Visual Studio版本。
例如:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin
C:\Program Files (x86)\Microsoft Visual Studio\2017\Pro\MSBuild\15.0\Bin
当然我可以用
$partial = ${env:ProgramFiles(x86)} + '\Microsoft Visual Studio\2017\'
Get-ChildItem -Path $partial -Filter 'MsBuild.exe' -Recurse
但C:\Program Files (x86)\Microsoft Visual Studio\2017\
下有很多其他文件和文件夹。
不幸的是,这样的事情并不奏效:
Get-ChildItem -Path $partial -Filter '\MSBuild\15.0\Bin\MsBuild.exe' -Recurse
有没有办法让PowerShell更好地提示在哪里寻找MsBuild.exe?
答案 0 :(得分:1)
Get-childitem支持通配符。由于只有字符串的特定部分发生变化(专业/社区),您可以用通配符替换它。
C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin
实际上你可以使用get-item作为完整的通配符路径。
Get-Item "C:\Program Files (x86)\Microsoft Visual Studio\2017\*\MSBuild\15.0\Bin\MSBuild.exe"
这将返回所有匹配的文件,并假设每个用户只有一个已安装的Visual Studio版本,您将获得一个文件。
答案 1 :(得分:0)
尝试类似这样的事情,并添加选择你的msbuild版本的地方
Resolve-Path HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\* |
Get-ItemProperty | select MSBuildToolsPath