MSBUILD.EXE环境变量

时间:2018-12-11 07:55:40

标签: azure-devops visual-studio-2017-build-tools

团队,

我有一个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 \“

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我能够使用代理中存在env变量的代码直接调用MSBUILD.exe。