0

3つのプロジェクトを含むVisualStudioソリューションがあります。同じ解決策は、他のTFSチームプロジェクトに属する既存のプロジェクトを追加したフォルダーを作成することです。

TeamPrj1
|- Solution1
 |- External Reference(folder)
 |- PrjA (added as existing project) 
 |- Prj1
 |- Prj2
TeamPrj2
|- SolutionA
 |- PrjA

Solution1のTFSビルドが必要です。私が直面している問題は、PrjAの参照が見つからないため、ソリューションがTFSビルドサーバーでコンパイルされていないことです。ワークスペースのマッピングで行うべき調整がいくつかあることを知っています。別のフォーラムやブログ投稿も調べましたが、それでも機能しません。PrjA dllをファイル参照として追加すると言う人もいますが、Sol1よりもPrjAで何かが変更された場合、最新のdllを再参照する必要があるので、そのルートに行きたくありません。参照として追加すると、TFSからSolution1を開くたびに自動的に最新のものが取得されます。

現在、以下は私のワークスペースマッピングです。

 Active $/TeamPrj1/Main/Solution1
 $(SourceDir)

 Active $/TeamPrjA/Main/SolutionA
 $(SouceDir)\Main\  
4

3 に答える 3

1

ソリューションは相対パスを使用して他のプロジェクトを参照する必要があるため、ビルド定義のワークスペースマッピングが実際にローカルワークスペースと同じファイル構造になることを確認する必要があります。

フォルダ名から判断すると、次のマッピングを使用する必要があります。

 Active | $/TeamProj1/Main/Solution1 | $(Sourcedir)\Solution1
 Active | $/TeamProjA/Main/SolutionA | $(Sourcedir)\SolutionA

PrjA.csprojただし、で定義されている相対パスがわかるまで、正確なターゲットパスを確認することはできませんSolution1.sln

おそらく、ビルド定義エディターの[プロセス]タブでもソリューションへのパスを更新する必要があります。

于 2013-02-02T03:58:08.833 に答える
0

Visual Studioプロジェクトがある場合、たとえば、複数のチームプロジェクトで使用される共有ライブラリコードを含むチームプロジェクトの場合、

  • 所有するチームのプロジェクト内でプロジェクトを管理することも、共有プロジェクト専用に別のチームプロジェクトを作成することもできます。

  • 後者のアプローチを選択し、共通の共有プロジェクトを使用する場合、
    Microsoft Visual Studio Team Foundation
    Server(TFS)ソース管理のフォルダー構造は次のようになります。

ここに画像の説明を入力してください

詳細については、以下を参照してください。

第6章– Visual StudioTeamSystemでのソース管理の依存関係の管理

于 2013-02-02T02:27:57.270 に答える
0

最良のオプションは、エンタープライズNuGetサーバーを用意し、このNuGetサイトのパッケージを内部で公開することだと思います。

さまざまなチームプロジェクトでのビジュアルスタジオソリューションの場合、参照用にNuGetを簡単に使用できます。TFS自動ビルドは、任意のソリューションのNuGetパッケージを簡単に復元することもできます。

また、自動ビルドを使用して、複数のTeamProjectおよびTeamコレクションに共通するアセンブリ/exeのNuGetパッケージをNuGetサーバーにドロップすることもできます。(ビルドテンプレートのxcopyコマンド)。

このアプローチを使用する最大の利点:すべてが自動化されます。手動でマージしてチェックインする必要はありません。複数のTeamProjectおよびTeamCollectionで使用できます。親の共通dllが変更された場合、その自動ビルドによりNuGetサーバーにプッシュできます。次回、NuGetを介して共通のdllを使用する他のすべてのプロジェクトは、ビルドサーバーの場合と同様に常に最新のものを持ち、常にNuGetから最新のものをダウンロードします(バージョン番号を同じに保つと仮定します)。

于 2013-02-13T14:09:07.003 に答える