首页 > 解决方案 > MSBUILD.EXE 环境变量

问题描述

团队,

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

提前感谢您的帮助。

标签: azure-devopsvisual-studio-2017-build-tools

解决方案


我可以直接在我的代码中调用 MSBUILD.exe,并且代理上存在 env 变量。


推荐阅读