9

私はSVNをしばらく使用しています。最近、私はTFSを使用しているプロジェクトで。ビルドでは、プロジェクト出力にビルド バージョン番号を追加/更新するのが好きです。アプリケーションではっきりと見えるように、マスターページでこれを行います。アプリケーションは複数のマシンで実行されている可能性があるため、どのバージョンが実行されているかについての便利な情報です。

私は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」タスクは masterPage.master ファイルを YYYY.MM.DD.SVNVERSION スタンプで更新します。

ソース管理として TFS を使用してこれを達成するにはどうすればよいですか。TFS ビルド番号を取得するにはどうすればよいですか?

4

1 に答える 1

5

チーム ビルドを意味すると仮定すると、$(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 を使用するようになったため、ビルド番号が必要な場合は、この MSDN 記事で説明されているように、ビルド定義を変更してそれを含める必要があります。

于 2009-10-08T01:30:05.217 に答える