团队,
我有一个powershell脚本,它调用MSBUILD.exe在Azure devops build管道中运行构建以对其进行打包。当前脚本使用vs12。我遇到了下面的错误,当它运行与vs 12。
错误MSB4019:导入的项目"C:\Program Files(x86(\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets"未找到。确认声明中的路径为正确,并且该文件存在于磁盘上。
因此,根据我同事的一项建议,我不得不将其从vs 12更改为vs 15,并为MSBUILD硬编码以下路径。
C:\Program Files(x86(\Microsoft VisualStudio\2017\Enterprise\MBuild\15.0\Bin\
并且构建运行良好。所以现在,我想在我的powershell脚本中使用ENV作为这个路径,这样它就可以动态地拾取它。
下面是运行MS构建的函数。
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 Studio2017EnterpriseMSBuild15.0Bin"
Join-Path $lib msbuild.exe
}
上面的代码运行良好,但我想使用env或一些预定义的环境变量动态生成路径。
现在,我的问题是,是否有一个预定义的环境变量来动态获取的路径
"C:\Program Files(x86(\Microsoft VisualStudio\2017\Enterprise\MSBuild\15.0\Bin\">
提前感谢您的帮助。
我能够在代理上存在env变量的情况下直接在代码中调用MSBUILD.exe。