团队,
我有一个Powershell脚本,该脚本调用MSBUILD.exe在Azure devops Build管道中运行该版本以对其进行打包。当前脚本使用vs12。在与vs 12一起运行时,我遇到了以下错误。
错误MSB4019:导入的项目“ C:\ Program Files (x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications \ Microsoft.WebApplication.targets“ 没找到。确认声明中的路径是 正确,并且文件存在于磁盘上。
因此,根据我的一位同事的建议,我不得不将其从vs 12更改为vs 15,并对下面的MSBUILD路径进行了硬编码。
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \
并且构建运行正常。因此,现在,我想在我的Powershell脚本中对此路径使用ENV,以便它可以动态获取它。
下面是运行MS build的功能。
Function Get-MSBuild {
$lib = [System.Runtime.InteropServices.RuntimeEnvironment]
$rtd = $lib::GetRuntimeDirectory()
Join-Path $rtd msbuild.exe}
以上代码在我的代理上失败,并且我在磁盘上遇到文件存在错误。我用msbuild路径替换了$ lib。如下。
Function Get-MSBuild {
$lib = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\"
Join-Path $lib msbuild.exe
}
上面的代码工作正常,但是我想使用env或一些预定义的环境变量动态生成路径。
现在,我的问题是是否存在预定义的环境变量来动态获取路径
“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \“
预先感谢您的帮助。
答案 0 :(得分:0)
我能够使用代理中存在env变量的代码直接调用MSBUILD.exe。