【问题标题】:How to call msbuild from a batch file from msbuild from team build?如何从团队构建中的 msbuild 的批处理文件中调用 msbuild?
【发布时间】:2011-12-16 02:54:03
【问题描述】:

我正在使用 Team Build (2010) 调用带有 Exec 任务的 msbuild 脚本,该任务调用批处理文件,该批处理文件又调用 msbuild。像这样:

<Exec Command="BatchFileThatCallsMSBuild.bat" />

当然,批处理文件会做很多其他的垃圾,或者我只是使用 MSBuild 任务。

问题是当批处理文件尝试调用 msbuild 时找不到它。

'msbuild' is not recognized as an internal or external command, operable program or batch file.

如何在 exec 任务中设置必要的环境?

我尝试将命令更改为:

<Exec Command="%22$(VS100COMNTOOLS)..\..\VC\vcvarsall.bat%22&amp;BatchFileThatCallsMSBuild.bat" />

但没有骰子,仍然没有找到 msbuild。

【问题讨论】:

  • 您是在批处理文件中指定 msbuild 可执行文件的完整路径,还是依赖相对路径(不能保证是您所期望的)?
  • 批处理文件不加修饰地调用“msbuild”。
  • 尝试指定 msbuild.exe 的完整路径。我不在开发电脑上(实际上,我在几小时前刚刚重新安装 Windows 的电脑上)所以我无法为你查找完整路径,但它应该在 %Windir%\ Microsoft.NET\Framework(框架版本)\
  • 我从第三方提交的批处理文件中获取,因此无法对其进行调整。

标签: msbuild tfsbuild


【解决方案1】:

我想出的答案是利用很少在线演示的多行命令字符串到 Exec 任务。

<Exec Command="call &quot;%VS100COMNTOOLS%..\..\VC\vcvarsall.bat&quot; x86
    set AnotherEnvVar=$(RandomMSBuildProperty)
    call BatchFileThatCallsMSBuild.bat
    type file_with_output_from_the_msbuilds_in_the_batchfile.log" />

这让我设置了基本的构建环境(调用 vcvarsall),将 msbuild 属性推送到批处理的 msbuild 可以看到的 Exec 环境,调用批处理文件,甚至将隐藏的 msbuild 输出拉到Exec 任务的级别,以便在 Team Build 中更清晰地登录。

我对必须在我的代码中嵌入对这个特定 VS 版本的另一个引用并不感到兴奋,但它现在可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 2013-07-23
    • 2019-08-04
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多