【问题标题】:Pass a value from TeamBuild to MSBuild将值从 TeamBuild 传递到 MSBuild
【发布时间】:2010-10-24 21:48:09
【问题描述】:

我有一个在 TFS TeamBuild 中运行的构建。我想将一个属性传递给为 TFSBuild.proj 构建的每个项目运行的 MSBuild。

例子:

TFSBuild.proj

<PropertyGroup>
   <Version>0.0.0.0</Version>
</PropertyGroup>

<Target Name="BuildNumberOverrideTarget" 
        DependsOnTargets="AfterInitializeWorkspace">

  <!--Code that loads the version from a file (removed).-->

  <PropertyGroup>
    <!--Save off the version.-->
    <Version>$(TxCompleteVersion)</Version>
</PropertyGroup>

MyWIXProjectFile.wixproj

<Target Name="BeforeBuild">
<PropertyGroup>
  <!--If Version is defined then use that.  
   Else just use all zeros to show that this is a developer built version-->
  <CurrentVersion Condition="'$(Version)' == ''" >0.0.0.0</CurrentVersion>
  <CurrentVersion Condition="'$(Version)' != ''" >$(Version)</CurrentVersion>
</PropertyGroup>
<Message Condition="'$(Version)' == ''" 
         Text="Version info is empty (i.e. a developer build).  Version set to $(CurrentVersion)"/>

</Target>

当构建 MyWixProjectFile.wixproj 时,每次都会打印显示 $(Version) 为空白的消息。

有没有办法让我可以获取项目文件以查看 TFSBuild.proj 属性?

瓦卡诺

【问题讨论】:

  • 您已验证 TFSBuild.proj 中的版本不为空正确吗?
  • 是的,我有。它在许多其他地方都使用过,并且始终正确。

标签: msbuild build build-automation tfsbuild


【解决方案1】:

我不是 Wix 方面的专家,但我确实找到了这个,并认为你可以尝试一下。

Setting properties for WiX in MSBuild

【讨论】:

  • 遗憾的是这对我没有帮助。我已经有一个从 MSBuild 到 WIX 的过程。从 TeamBuild 到 MSBuild(在项目级别)让我卡住了!感谢 Vaccano 的帖子
【解决方案2】:

这是通过 SolutionToBuild 标记中的属性元数据完成的。例如:

  <ItemGroup>
    <SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisOne.sln">
      <Targets></Targets>
      <Properties>Change=True</Properties>
    </SolutionToBuild>
    <SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisToo.sln">
      <Targets></Targets>
      <Properties>Change=True</Properties>
    </SolutionToBuild>
    <SolutionToBuild Include="$(BuildProjectFolderPath)\DontChangeThis.sln">
      <Targets></Targets>
      <Properties>Don'tChange=False</Properties>
    </SolutionToBuild>
  </ItemGroup>

【讨论】:

    【解决方案3】:

    选项 1

    使用MSBuild直接调用MyWIXProjectFile.wixproj并将Version作为属性传递

    选项 2

    将 wix 的构建抽象为它自己的自包含脚本,然后使用 MSBuild 直接调用并传递所有必要的属性。我在http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html 有一个完整实现的博客,您可能会感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 2014-01-29
      • 2013-11-25
      • 2012-05-03
      • 2019-11-24
      • 2016-06-04
      相关资源
      最近更新 更多