2010年以降、TfsはパッケージのビルドにWindowsワークフローを採用していることに注意してください。ワークフローは、プロジェクトのコンパイルのみにmsbuildを呼び出しますが、この方法でチェンジセットを渡して、かなり多くのホップをmsbuildに渡すことができます。以下は問題に対処しますが、リンクされたソリューションは必要以上に複雑です。
アセンブリバージョンはTFS 2010ビルドごとに自動的に更新できますか?
これは、カスタムビルドアクティビティに関する一連のチュートリアルの中で最も優れたものの1つであり、作成者もスタックに含まれていると思います。具体的には、 http: //www.ewaldhofman.nl/post/2010/05/13/Customize-Team-のバージョン管理についてです
。 Build-2010-e28093-Part-5-Increase-AssemblyVersion.aspx
つまり、ソースファイルでコンパイルする前に実行するカスタムアクティビティが必要であり、すべてのCommonAssemblyInfo.csファイルを検索し、このリストをカスタムアクティビティにフィードします。これにより、完全なバージョン番号の渡された値で内部の値が変更されるか、チェンジセットとオプションでチェックインされます。変更(おそらく、変更セットが同期しなくなるためではありません)。
また、 https: //tfsbuildextensions.codeplex.com/アクティビティのセットを確認することもできます。それらの中にはTfsVersionアクティビティがあり、少なくとも例が提供されます。
これに必要な機能は、チームエクスプローラーとソース管理から利用できる必要があります-カスタムアクティビティアセンブリとビルドテンプレートは通常、チームプロジェクトルートのフォルダーにあります-このフォルダーの場所はビルドコントローラー用に定義されており、チームエクスプローラービルドで変更できますセクション。
チェンジセットは値BuildDetail.SourceGetVersionから入手できます。これが2012年に修正/変更されたかどうかはわかりませんが、2010年にはこの値に関して2つの問題がありました。
- デフォルトのビルドテンプレートのGetVersionオーバーライドを尊重しません-オーバーライドが使用されている場合は手動で更新する必要があります
- 最新のビルド(オーバーライドなし)を実行すると、tfsから最後のチェンジセット番号が取得されます。ブランチによっては、ビルドのブランチの「最後の」チェンジセットと同じでない場合があります。これに対応するか、ビルドごとにオーバーライドを提供するか、ブランチ履歴で最後のチェンジセット値をチェックして再度オーバーライドするアクティビティを実装する必要があります。
GetVersionは、変更セット、日付、ラベルなど、すべてのsourcespecバージョンを受け入れることができるはずであることに注意してください。詳細を提供するのに十分なほどこれをいじったことはありません。