9

Visual Studio のソリューション エクスプローラーのコンテキスト メニューで行ったように、ソリューションの最新バージョンを再帰的に取得するにはどうすればよいですか? コマンドラインまたはマクロからこれを行いたい。一連のバッチ ファイルを使用して、日常業務の一部を自動化しようとしています。多くの開発者がこのようなものを望んでいると確信しています。

tf getフォルダーの内容を再帰的に取得するだけです (ソリューションではありません)。プロジェクトの依存関係などは調べません。それはうまくいきません。

4

7 に答える 7

4

TFSには.NetSDKがあり TFSサーバーと対話する独自のカスタムプログラムを作成できます。必要なタスクを実行する小さなプログラムを作成できます。

TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer");

myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);
于 2008-10-08T22:56:49.107 に答える
3

ソリューション エクスプローラーがこれらすべてのオブジェクトを「設計上」省略することに同意します。 、およびそのソリューションに必要なすべての依存関係があることを知っており、コマンド ライン ツールを使用して実行する方法を学習したり、必要ない場合はソース管理エクスプローラーを使用したりする必要はありません。

コード以外のすべての依存関係をソリューション アイテムとして含める (ソース管理フォルダーと同じフォルダー構造を使用してソリューション フォルダーを編成する) ことで、プロジェクトの新しい開発者がソリューションを開いてコンパイルするために必要な「ブードゥー教」の知識を減らすことができます。

フォルダ ツリー全体を VS ソリューション内のソリューション フォルダにリンクできるとよいでしょう。

于 2010-07-23T17:57:36.750 に答える
2

別のフォルダーの下に依存プロジェクトがある場合。これを使用して、すべてのサブディレクトリをループして、各プロジェクトの最新のものを取得します。

メインディレクトリから開始C:\Project\SupportingProjects

FOR /D %%G IN ("*") DO ECHO ..from....%%G && tf get C:\Projects\SupportingProjects\%%G 

::Get the latest for the Main project
tf get C:\Projects\MainProject /recursive 

私の場合、MainProject フォルダーにはソリューション ファイルとプロジェクト ファイルが含まれています。

これは簡単で簡単だと思いました。

FOR コマンドの詳細: http://ss64.com/nt/for_d.html

于 2012-04-16T18:52:06.140 に答える
1

うーん... 3 つのオプションがあるようです。

  1. バッチ ファイルで、必要な各ディレクトリ ブランチで tf get を発行します。

  2. すべての依存関係が同じルート パスの下にあるように、ソリューションを再編成します。

  3. ロードされたプロジェクトを右クリックして get コマンドを発行する視覚的な方法を使用します。

実際にソリューションに対応しているのは、プロジェクトが IDE に読み込まれたときだけです。またはビルドサーバーによってロードされたとき。

于 2008-08-29T19:55:29.100 に答える
0

これをしないでください。VSはあなたが思っているほど賢くはありません。(誰もが3回以上の製品サイクルで経験した神秘的で無駄なチェックアウトによって証明されるように、あなたと私は含まれています。これは信頼できるシステムのマークではありません!)

あなたが説明することは、プロジェクト間の参照に対してのみ機能します。ソリューションエクスプローラーからソース管理操作を実行すると、「設計上」省略されます。

  • プロジェクトからアセンブリへの参照
  • ビデオ、サウンド、PDF、VSがサポートしていないが、製品で不可欠な役割を果たす可能性のあるその他のタイプのメディア
  • プロジェクトで参照されるMSBuild*.targetsファイル
  • カスタムターゲットから参照されるあらゆる種類のファイル
  • ビルドプロセスに必要なサードパーティの実行可能ファイル

不完全な同期にはノーと言ってください。その道を行くと、頭痛だけがあります。

コマンドラインからパススコープなしで「tfget」を実行するか、ソース管理エクスプローラーで右クリック->ルート$/ノードから取得します。

于 2009-10-14T05:51:20.830 に答える
0

もう 1 つの考えられる解決策は、powershell を使用することです。次のリンクは、TFS からソリューションを取得してローカルでビルドする方法を示すコード プロジェクト サンプルへのリンクです。Powershell は、通常のバッチ ファイルよりもはるかに優れたソリューションです。

http://www.codeproject.com/KB/install/ExtractAndBuild.aspx

于 2009-10-13T14:15:07.527 に答える
0

あなたがバッチファイルについて言及したことは知っていますが、何か他のものを投げさせてください.

2005 バージョンの TFS を使用していると思います。2008 には、すべてのスケジューリング機能が組み込まれています。

ただし、CruiseControl.netを使用してスケジュールされたビルドを行うこともできます。私は TFS 2008 と CruiseControl の両方を使用しましたが、どちらも問題なく動作しているようです。

于 2008-09-09T18:22:54.437 に答える