John Robbins の記事TFS 2010 Build Number and Assembly File Versions: Completely In Sync with Only MSBuild 4.0を読みましたが、これを統合する最善の方法について疑問に思っています。
この記事のダウンロードには 2 つのファイルがあり、1 つはターゲット ファイルで、もう 1 つは proj ファイルです。
ターゲット ファイルには、Tfs ビルド番号 (ビルドに使用されるものと同じ) に基づいてビルド番号を取得し、その番号を他の proj ファイルで使用できるように特定の場所 (BuildNumberFile と呼びます) に書き込むための多くのタスクがあります。
proj ファイルは非常に単純です。前述のターゲット ファイルをインポートし、「All」という名前のターゲットを宣言するだけでなく、Project 要素の DefaultTargets も All であると宣言します。
<Project ToolsVersion="4.0" DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- The two required properties so the Wintellect.TFSBuildNumber tasks knows your major and minor values.-->
<TFSMajorBuildNumber>3</TFSMajorBuildNumber>
<TFSMinorBuildNumber>1</TFSMinorBuildNumber>
</PropertyGroup>
<Import Project="Wintellect.TFSBuildNumber.targets"/>
<!-- Just ask for the version information files you need. These are here to show all the diffent ones in
Wintellect.TFSBuildNumber.Targets. You can change the names -->
<Target Name="All"
DependsOnTargets="WriteSharedCSharpAssemblyVersionFile;
WriteSharedVBAssemblyVersionFile;
WriteSharedCPPCLIAssemblyVersionFile;
WriteSharedCPPAssemblyVersionFile;
WriteSharedWiXAssemblyVersionFile;
WriteSharedTextAssemblyVersionFile;"/>
</Project>
これについて 2 つの質問があります。
- 私はまだMSBuildを学んでいます。ターゲットの名前がターゲットの他の場所で指定されていない場合、ターゲットは実行されますか? このターゲットが確実に実行されるようにするにはどうすればよいですか?
- csproj ファイルは、コンパイル時まで存在しない場合でも、BuildNumberFile がある場所のインクルード項目を宣言することになっていますか?
- ItemGroups と Include には DependsOnTargets など、ビルド前にファイルが存在することを確認できるものがありますか?
- これを使用した csproj ファイルの内容全体が BuildNumberFile の DependsOnTargets を表すターゲットにラップされることになっていますか?
ありがとう!