MSBuild TFS内部版本号

时间:2009-10-08 01:25:36

标签: tfs msbuild msbuild-task tfsbuild

我一直在使用SVN一段时间。最近我正在使用TFS的一个项目。在构建中,我喜欢在项目输出上追加/更新构建版本号。我在母版页上执行此操作,以便在应用程序中清晰可见。由于应用程序可以在多台计算机上运行,​​因此它是运行verison的便捷信息。

我在SVN世界中认识到这一点:

  <!-- Import of the MSBuildCommunityTask targets -->
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
    <!-- to AssemblyInfo to include svn revision number -->
    <Target Name="BeforeBuild">
      <SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(ProgramFiles)\CollabNet Subversion Client">
        <Output TaskParameter="Revision" PropertyName="Revision" />
      </SvnVersion>
      <Time>
        <Output TaskParameter="Year" PropertyName="Year" />
        <Output TaskParameter="Month" PropertyName="Month" />
        <Output TaskParameter="Day" PropertyName="Day" />
      </Time>
      <FileUpdate Files="MasterPage.master" Regex="svn revision: (\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="svn revision: $(Year).$(Month).$(Day).$(Revision)" />
    </Target>

如上所示,“BeforeBuild”任务使用YYYY.MM.DD.SVNVERSION标记更新masterPage.master文件。

如何使用TFS作为源控件来实现此目的。我如何获得TFS内部版本号?

1 个答案:

答案 0 :(得分:5)

假设您的意思是Team Build,$(BuildNumber)属性包含当前的内部版本号。

有关可用属性的完整参考,请参阅http://blogs.msdn.com/aaronhallberg/archive/2008/02/12/team-build-2008-property-reference.aspx

如果您只是运行MSBuild,我不相信它会生成/应用整体内部版本号(每个项目在其AssemblyInfo.cs [默认情况下]文件中将有一个单独的,可能是自动递增的版本号) 。您可以在运行时使用System.Reflection.Assembly类动态获取特定程序集的此版本号。


更新

自TFS 2010起,“BuildNumber”变量不再由TFS自动传递给MSBuild流程。 TFS 2010现在使用Windows Workflow作为其内部构建引擎,因此如果您需要构建号,则必须修改构建定义以包含它,如this MSDN article中所述。