【问题标题】:Setting a version in MSBUILD from TFS Build从 TFS Build 在 MSBUILD 中设置版本
【发布时间】:2009-07-08 23:16:31
【问题描述】:

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

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

当我到达 BeforeCompile 时,Revision 与我的变更集匹配,但当我到达 BeforeCompileConfiguration 时,Revision 又回到 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>

【问题讨论】:

    标签: tfs msbuild


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多