MSBuild TFS ビルド番号
-
20-09-2019 - |
質問
私はここしばらく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 ビルド番号を取得するにはどうすればよいですか?
解決
チーム ビルドを意味すると仮定すると、$(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 ワークフローを使用するようになりました。そのため、ビルド番号が必要な場合は、で説明したようにビルド定義を変更してそれを含める必要があります。 この MSDN 記事.