【问题标题】:Microsoft Tfs build variable gets lostMicrosoft Tfs 构建变量丢失
【发布时间】:2014-06-08 06:02:14
【问题描述】:

我正在使用下一个目标运行构建:

  <Target Name="BeforeCompile">
    <Message Text="Build no: $(BuildNumber)" />
  </Target>

然后我运行构建(使用 nmake)。之后我想部署固件:

  <Target Name="AfterCompile">
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1" />
  </Target>

  <Target Name="CustomDeployMagicFirmware">
    <Message Text="...Deploying bootloader files to build machine - folder: $(BuildNumber)" />
    <Exec Command='xcopy "$(SolutionRoot)\Repository\bootloader\*.axf" \\machine\bootloader\$(BuildNumber) /y /q'/>
    <Exec Command='xcopy "$(SolutionRoot)\Repository\bootloader\*.hex" \\machine\bootloader\$(BuildNumber) /y /q'/ -->
  </Target>

问题在于,在目标“BeforeCompile”中,我得到了 $(BuildNumber) 的正确消息输出。但后来我有消息测试输出,如:
...部署引导加载程序文件以构建机器 - 文件夹:
看起来变量 $(BuildNumber) 不再设置。还命令 xcopy 将文件复制到文件夹 bootloader 而不是文件夹 bootloader\$(BuildNumber)。

我做错了什么?哪些因素会影响变量内容?

【问题讨论】:

    标签: tfs build msbuild tfsbuild


    【解决方案1】:

    错误在这一行

    <MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1" />
    

    MSBuild 任务生成一个新的 MSBuild.exe 进程,并且您没有将属性 $(BuildNumber) 传递给新进程。像下面这样更改它,这将起作用

    <MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1;BuildNumber=$(BuildNumber)" />
    

    【讨论】:

      【解决方案2】:

      使用 &lt;CallTarget&gt; 而不是 &lt;MSBuild&gt; 来调用您的 CustomDeployMagicFirmware 目标。

      【讨论】:

      • 我需要调用 MSBuild,因为我多次运行目标 CustomDeployMagicFirmware。如果使用 CallTarget TFS 只会调用一次。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 2011-01-15
      • 1970-01-01
      • 2017-09-28
      相关资源
      最近更新 更多