0

TFSを使用してソリューションを構築しています。ドキュメントライターにソースへのアクセスを許可したくないため、プロジェクトに含めないヘルプファイルがいくつかあります。これらのファイルは、ネットワーク上のフォルダーに配置されます。

ビルドが開始されたら、プロセスがネットワーク上の場所からファイルを取得し、ソースの一部であるヘルプフォルダーに配置する必要があります。

xamlで、CopyDirectoryと呼ばれるビルドプロセスのアクティビティを見つけました。これはうまくいくと思いますが、DestinationプロパティとSourceプロパティにどの値を配置するかわかりません。ビルドが成功するたびに、ビルドがネットワーク上の場所にコピーされます。1つのネットワーク上の場所から新しいビルドディレクトリにファイルをコピーします。

私はこれに間違った方法でアプローチしているかもしれませんが、どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

2

まず、ドキュメントの作成者が自分のドキュメントをTFSに配置することを検討することをお勧めします。ソースコードへのアクセスを許可せずに、別のフォルダまたはプロジェクトへのアクセスを彼に与えることができます。これの利点は次のとおりです。

  • すべてがソース管理されています。ネットワークフォルダにドロップされたファイルは、簡単に置き忘れたり破損したりする可能性があり、変更の履歴はありません。プロジェクトに理想的なのは、プロジェクトに関連するすべてのものがソース管理にキャプチャされるため、必要なときにいつでも完全な履歴バージョンを取得できることです。
  • ドキュメントをビルドサーバー上の別のローカルフォルダーにマップして、ソースコードの「get」を実行するだけで、必要な場所にドキュメントが自動的にコピーされるようにすることができます。

欠点は、彼がこれを実行できるようにするために追加のCALが必要になる場合があることです。

もう1つの(より面倒な)アプローチは、彼にネットワーク上の場所に保存させ、開発者に新しいファイルをTFSに定期的にチェックさせることです。ドキュメントが頻繁に更新されない場合、これは許容できる妥協案である可能性があります。

ただし、ビルド中にネットからドキュメントをコピーする場合は、MSBuildCopyコマンドの1つを使用するか(既に知っているように)、またはを使用できますExec。コピーコマンドは、他のビルドターゲットの出力から生成されたファイル名リストが入力されることが多く、通常はソリューション相対パス名で使用されるため、使用がより複雑になります。ただし、DOSコマンド(xcopy / robocopy)に満足している場合は、Execを使用してxcopy/robocopyコマンドを実行する方がはるかに簡単な場合があります。次に、MSBuild環境の外部でxcopyコマンドを「開発」してテストし、それが機能することを確信してMSBuildスクリプトに貼り付けることができます。これは、完全なビルドプロセスの一部としてコピー設定を試すよりもはるかに簡単です。

Execはここに文書化されています。この例は、あなたが望むことを行う方法をかなりよく示していますが、あなたの場合、おそらくCommand属性を、使用したいxcopy / robocopyコマンド全体(またはバッチファイルの名前)に置き換えることができるので、 ItemGroupなどを設定する必要があります。

于 2013-03-20T21:18:57.657 に答える