1

TFS 2010 を使用して、さまざまなチーム プロジェクトで保持されている他のいくつかのソリューションに依存するソリューションを構築する必要があります。ビルド定義を編集していて、「ビルドするプロジェクト」のリストを作成しています。親ソリューションをビルドすると、他のソリューションによって作成されたアセンブリを参照できないため、エラーが発生します。そのため、ビルドの編集に戻ります。を定義し、/p:ReferencePath="c:\builds\3\referencedproject\binaries\" を "MSBuild Arguments" ビルド プロセス パラメーターに追加します。

問題は、c:\build\3 をハード コードしたくないことです。その代わりに使用できる $() プロパティがあると思います-誰かアドバイスしてもらえますか?

私が抱えているもう1つの問題は、「メイン」プロジェクトとそれが参照する他の2つのプロジェクトがソースコードの同じレベルにあることです。私が知る限り、ソース管理フォルダーをこれより上のレベルに設定する必要があります。これはたまたまルートです。これは、TFS ビルドがルート上のすべてのプロジェクトを取得することを意味します。これには、私のビルドには必要のない多数のプロジェクトが含まれます。これらの無関係なプロジェクトをコンパイルしようとしないため、重大な問題ではありませんが、ビルド サイクルが完了するまでの時間が長くなります。これを回避して、ビルドに必要なプロジェクトを別の TFS ソース フォルダーに「グループ化」する唯一の方法はありますか?

4

2 に答える 2

2

参照の問題については、いくつかのオプションがあります。バイナリを TFS にチェックインすることにより、特定のバージョンに明示的に依存する最も一般的なもの。

たとえば、チーム プロジェクト A がチーム プロジェクト B に依存している場合、それらは別々のプロジェクトとしてセットアップされていると思います。なぜなら、それらは異なる方法で進化し、おそらく異なるチームが作業し、異なるリリース サイクルを持っているからです。この依存関係を管理する一般的な方法は、B.dll をチーム プロジェクト A (通常、この目的のために特に lib フォルダー内) にチェックインし、プロジェクト A のソリューション/プロジェクト内から lib フォルダー内の dll へのファイル参照を使用することです。

このアプローチにより、プロジェクト A チームは、依存する B.dll のバージョンを明示的に選択し、独自のスケジュールで B.dll の新しいバージョンを採用することを明示的に決定できます。

ビルド定義のダウンロードでソース コード パスのみを選択する方法に関するもう 1 つの質問については、ビルド定義を設定するときにワークスペース マッピング画面で複数の行を指定できます。たとえば、次のようにすることができます。

$\ProjectA -> $(SourceDir)\ProjectA
$\ProjectB -> $(SourceDir)\ProjectB

これにより、プロジェクト A + B はダウンロードされますが、C はダウンロードされません。

于 2012-07-24T16:13:39.483 に答える
1

これが最も簡単に解決できるはずなので、問題 2 から始めます。

ビルド定義のワークスペース マッピングの変更を伴う 2 つのオプションがあります。

「上の」フォルダーでマップする必要はありません。ソースが次のようになっている場合は、個々のフォルダーをマップできます。

$/TP/SolutionA

$/TP/Folder1/SolutionB

$/TP/Folder1/SolutionC

$/TP/Folder2/SolutionD

ビルドに SolutionA と SolutionC のみを含めたい場合は、次のようにワークスペースを設定できます。

ワークスペース マッピング

これにより、必要なコードだけが取得され、それらの間の相対パスが保持されます。

別のオプションは、クローキングを使用することです。「ルート」フォルダーをマップしてから、ビルドで無視するフォルダーをクロークします。

ここに画像の説明を入力

これらの方法は両方とも、ビルドの実行時にダウンロードされるソースの量を制限し、マップされていない/クロークされていないフォルダーでチェックインが発生したときに「継続的な」ビルドが開始されるのを防ぎます。


問題番号1。

ディランが示唆するように、おそらく最善の方法は、ソリューション間でバイナリ参照を使用することです。特に、個別のチーム プロジェクトでのソリューション。

完全な説明については、この質問に対する私の回答をご覧ください。

于 2012-07-24T16:43:22.653 に答える