2009-07-22 5 views
2

MSBuildとTFSを使って作業しようとしています。MSBuildとTFSを使って作業する

私は独自のMSBuildスクリプトを作成できました。これはコマンドラインからうまく機能します。このスクリプトはcsprojファイルで動作し、必要なものをコンパイル、難読化、署名、コピーします。

しかし、TFS &チームビルドのドキュメントを見ると、それは解決策がスクリプトの「入力」として期待されるようです。

また、スクリプトの一部としてTFSから「最新のバージョンを取得する」という簡単で直感的な方法は見つかりませんでした。私はチームビルドがコンパイルしようとしているソリューションで自動的に「最新のものを取得する」と仮定していますが、もう一度やり直してください...

洞察力はありますか?任意のポインタ?任意のリンク?

答えて

6

チームビルドについては約25 targets of its ownと定義されています。チームビルドをキューに入れると、@ MSDNのあらかじめ定義された順序で自動的に実行されます。このプロセスは変更しないでください。代わりに、タスクの動作を決定するcouple of these propertiesを設定するだけです。例えば、通常のGet動作をしたい場合は<IncrementalGet>を "true"に設定し、tf get/forceに近いものを使用する場合は "false"に設定します。

MSBuildスクリプトを実行している限り、これはもう必要ありません。あなたのために用意されているTFSBuild.projファイルから始めてください。あなたが記述したすべてを行うには最小限の変更しか必要ありません。 AfterCompileやAfterTestのようなタスクをオーバーライドすることによって難読化&の署名コードを呼び出します。 AfterDropBuildに自動展開コードを入れてください。その他

リファクタリングを適切に行うと、実際に複雑なシナリオも可能です。過去の回答を参照してください。#1#2

実際のコンパイルでは、チームビルドがソリューション上で動作することは間違いありません。私はそれが望むものを与えることをお勧めします。 * .slnファイルは醜いものであり、文書化されていないことを最初に認めるでしょうが、少なくとも、よくテストされた&サポート対象の製品に作業を負荷しています。

本当にしたいのなら、空白/ダミーの解決策を与えて、カスタムコンパイラロジックでCoreCompileタスクを上書きすることができます。しかし、これは本当にトラブルを求めています。最低限でも、Team Buildの柔軟性を失って、複数のプラットフォームとフレーバーを構築するWRTを失います。もっと実用的には、「ちょうどうまくいく」ように設計されたものをデバッグするのに多くの時間を費やす必要があります。まだわかりやすいMSBuildデバッガはありません。それほど価値はない、IMO。

ところで、ソリューションファイルはGetプロセスに影響しません。第1リンクからわかるように、Getは、チームビルドがソリューションファイルを読み込む前からずっと早い段階で行われます。 <IncrementalGet>のようないくつかのオプションを除いて、これはMSBuildから全く制御されません。特に、ダウンロードされるパスはビルド定義に関連付けられたワークスペースマッピングによって決まります。つまり、ファイルシステムではなくチームビルドSQLデータベースに格納され、TFS WebサービスAPIを呼び出すツール(チームエクスプローラなど)で管理されます。

+0

私はこれに関するフォローアップの質問があります。あなたはAfterCompileタスクで難読化/署名を実行する必要があると言います。それが推奨される解決法ですか、またはDotfuscatorプロジェクトを使用できますか? また、Wixプロジェクトはどうですか?どのようにファイルをどこから取得するのか教えてください。 – SaguiItay

+0

AfterCompileなどのタスクをオーバーライドすると、Team Build *にコードを実行するタイミングを通知するだけです。 *チームビルドは、当時はあなた次第です。Dotfuscatorのmsbuildプロジェクトに 'があれば、完璧です。あなた自身でコマンドライン署名ツールを呼び出すカスタムコードをお持ちの場合は、それも問題ありません。 Wixでも同じです。私は個人的に、可能な限り多くのツールを使用して作業を行うためのmsbuildタスクを再利用したいと思いますが、それはあなた次第です。 –

+0

質問は、より一般的な質問でした - ツールで提供されるMSBuildタスクを使用するのですか、またはMSBuildタスクを使用してこれらのツールによって作成されたプロジェクトを構築しますか? (基本的に、わかりにくいのですか、私のために作業を行うObfuscationプロジェクトをコンパイルしますか?) – SaguiItay

関連する問題