在TFS Build中设置MSBUILD中的版本

时间:2009-07-08 13:31:02

标签: tfs msbuild

我有一个在Team Foundation构建上运行的msbuild脚本。构建中的一个项目是clickOnce应用程序。到目前为止,我已经研究了如何让脚本将项目发布到正确的位置,但我无法设置应用程序版本的单击。

我使用msbuildcommunitytasks中的TFSVersion任务设置版本这似乎工作正常我可以看到我的版本号更新。问题似乎是当我们进入CompileConfiguration和publish部分时,这个版本号被重置回初始值。如何传播此值?

当我进入BeforeCompile时,修订版与我的变更集匹配,但是当我到达BeforeCompileConfiguration时,修订版又回到了0。

以下是剧本要点:

<PropertyGroup>
  <CustomizablePublishDir>true</CustomizablePublishDir>
  <SkipLabel>true</SkipLabel>
  <!-- Version Settings -->
  <Major>2</Major>
  <Minor>12</Minor>
  <Build>0</Build>
  <Revision>0</Revision>

  <GetDependsOn>
    $(GetDependsOn);
    Version
  </GetDependsOn>
</PropertyGroup>

<ItemGroup>
  <SolutionToBuild Include="$(BuildProjectFolderPath)/../../AutoBuildTest/AutoBuildTest.sln" />
  <SolutionToPublish Include="@(SolutionToBuild)" >
    <Properties>
      PublishDir=\\DeployServer\Deploy\AutoBuildTest\;
      MinimumRequiredVersion=$(Major).$(Minor).0.0;
      ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision)
    </Properties>
  </SolutionToPublish>
</ItemGroup>

<Target Name="Version">
  <Message Importance="high" Text="Updating Version: $(Major).$(Minor).$(Build).$(Revision)"/>
  <TfsVersion LocalPath="$(SolutionRoot)">
    <Output TaskParameter="Changeset" PropertyName="Revision"/>
  </TfsVersion>
  <Time Format="ddMM">
    <Output TaskParameter="FormattedTime" PropertyName="Build" />
  </Time>
  <Message Importance="high" Text="New Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>

1 个答案:

答案 0 :(得分:1)

这可能是因为SolutionToBuild项目组填充了值0,因此属性接收$(Revision)的值。

您可以尝试重写BeforeCompileConfiguration,以便在版本号更新后而不是在脚本开头时动态包含该解决方案,如下所示:

<Target Name="BeforeCompileConfiguration">
    <ItemGroup>
        <SolutionToPublish Include="@(SolutionToBuild)" >
            <Properties>
              PublishDir=\\DeployServer\Deploy\AutoBuildTest\;
              MinimumRequiredVersion=$(Major).$(Minor).0.0;
              ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision)
            </Properties>
        </SolutionToPublish>
    </ItemGroup>
</Target>