2011-01-20 12 views
8

アセンブリを見て、どのアセンブリがビルドされたかを素早く特定できます。TFSビルド:アセンブリの「ビルド番号」フィールドにブランチ名を含める

TFS Buildを構成して、作成するアセンブリの[ビルド番号]フィールド(またはより適切なフィールド)に現在のブランチの名前を含めるには、どのような方法が最適ですか?

+2

[AssemblyConfigurationAttribute](http://msdn.microsoft.com/en-us/library/system.reflection.assemblyconfigurationattribute.aspx)を使用することをお勧めします。これは、フリーフォームのテキストビルド構成に使用することを目的としています。情報。また、プロジェクト間で[VersionInfo](http://stackoverflow.com/questions/62353/what-are-the-best-practices-for-using-assembly-attributes)ファイルを共有するパターンに移行することをお勧めしますこの情報を1か所で更新することができます。私はTFSのことを何も知らないので、それを手伝ってはいけません。 –

+0

@chibacityブランチは設定ではありません。 AssemblyInformationalVersionAttributeはその情報を格納するのに適しているようです。ブランチに対して明示的にアセンブリ属性がないのは少し奇妙です。 – mhenry1384

答えて

4

は、それは、ビルドにassemblyinfo.csを更新することができますhttp://msbuildtasks.tigris.org/

にバージョンタスクを見てください。あなたがmajor.minor.build.revision部分の一部を専用にすることができナンバリングバージョンに宗教的な議論を持っていることの危険性にはまだ枝を識別するために、「どのように」を残す

...

ブランチ。 たとえば、major.minorは「外部/商用」のバージョン番号の直後にあり、buildはビルド番号形式TFSであり、リビジョン1はメインブランチを示し、リビジョン2は特定のブランチを示します。 AssemblyInformationalAttributeなどの他のアセンブリバージョン属性をonに使用して、ブランチIDを格納することもできます。

現在のブランチを検出する方法は最新ではありませんが、現在のディレクトリを取得し、ブランチ名を推論するロジックを適用するだけです。 tfブランチの出力。コマンドは現在のワークスペースのブランチ名も与えるべきですが、最初の行だけを抽出するカスタムタスクが必要です。

プラグアンドプレイの回答ではありませんが、正しい方向に向けるかもしれません。

+0

素晴らしいスタートポイント、ありがとう。私はこれが簡単な解決策でもっと一般的に質問されていないことに驚いています。 –

+0

これは古い答えです。ちょうど更新目的のためにコメントしています。少なくともTFS 2013とTFS 2015では、 'tf branch。 'はうまくいかないようです。 'tf branch'はソース引数とターゲット引数を必要とし、ソースディレクトリからターゲット名を持つブランチを作成するようです。[ドキュメントをクリック](https://msdn.microsoft.com/en-us/library/d73s8b27.aspx) –

0

バージョンは入手して、さまざまなAssemblyInfo.csファイルを更新するという点で簡単です。

私はあなたのTFS構造をSubversionの規約と同様に編成したいので、トランク、タグ、ブランチのフォルダがあります。

一貫した名前を付けることで、特定のMSBuildファイルが、特定のブランチ名のトランクのいずれかのディレクトリから常に設定された数のディレクトリであることを確認できます。

(これはTFSフォルダ階層を上に移動することによって)これを実行するカスタムMSBuildタスクを持ち、AssemblyInformationalAttributeの更新に使用するプロパティにこれを供給します。 http://msbuildtasks.tigris.org/FileUpdateタスクを使用して、AssemblyInfo.csファイルでRegex置換を実行できます。

+1

AssemblyInformationalVersionAttributeを意味すると思います。 – mhenry1384

関連する問題