質問

あるビルドの出力を別のビルドにバイナリとして含める適切な方法は何ですか?

CompanyName.domain(私のドメインレイヤー)というソリューションがあるとしましょう。私はそれをビルドとしてセットアップし、毎晩ビルドします。

次に、someproject.webというソリューションを追加したいと思います。また、ソリューションでピアレベルでバイナリからバイナリフォルダーにバイナリを含めたいと思います。次に、プロジェクトSomeProjects.Web Binaries CompanyName.domain.dllへの参照が機能します。

これを行うためのベストプラクティスは何ですか?私は彼らが分岐でこれをやろうとしていると言った誰かを知っています。私は完全な「ソースコントロール」Newbです。しかし、これについての何かは間違っているように聞こえます。

役に立ちましたか?

解決

Darylと同じように、バイナリを参照する「バイナリ」フォルダーを使用します。 「ライブラリ」は、結果をバイナリの場所にXcopyだけ構築するため、ライブラリを更新したい場合は、バイナリをチェックアウトし、構築し、再度チェックインします。

これにより、単一の標準化された場所からすべての内部ライブラリ(および使用するサードパーティライブラリ)を共有することができ、すべてのライブラリを事前に構築でき、実際に何も変更していない場合は開発者を構築する必要があります。 libs。

ライブラリの参照リリースビルドのみに注意してください(これに条件付きデバッグビルドのみにコンパイルされたデバッグヘルパーのライブラリがあることです。そうしないと、デバッグバージョンを参照する必要があります。デバッグビルドでもプログラムから編集されました!)

最後の注:合理的な代替手段がない限り、分岐を避けてください。

他のヒント

私の会社は、BINフォルダーが実際にソース制御の下で保存されないため、外部参照アセンブリを構築するために必要なすべての.DLLファイルを保持する「参照」フォルダーを作成することでこれを行います。

を使用します TFS依存関係レプリケーター, 、プロジェクトが構築された後、TFSのプロジェクトにファイルをコピーできます。本当に素晴らしいドキュメントはありませんが、セットアップを取得した後に想定されていることをしているようです。

ブログ投稿 TFSチームビルドで依存関係の複製を実装します どのプロジェクトがどの依存関係を使用しているかを追跡するために支援シナリオを設定することをお勧めします。これは私にとっても理にかなっています。

私のプロセスは、他のポスターのプロセスに似ています。

2つのプロジェクトがあるとし、それらをCoreProjectとAppProjectと呼んでください。 CoreProjectが共有されます。 AppProjectには、Sharedbinariesというフォルダーがあります。これは、すべてのアセンブリ参照が指す場所です。

CoreProject用の私のTFSBUILDスクリプトは、以下を実行するように構成されています。

- 最新のGet

- ドロップツードロップゾーン( server dropzone coreprojectbuildnameandnumberのようなもの)

- ドロップはドロップゾーンのフォルダーにコピーされます( server dropzone rest coreprojectのようなもの)

AppProjectのTFSBUILDスクリプトは、次のことを行うように構成されています。

- 最新のGet

-Sharedbinariesフォルダーでファイルをチェックします

- server dropzone rest coreprojectからのコピーファイル

-建てる

- ドロップツードロップゾーン( server dropzone appprojectbuildnamsnumberのようなもの)

-buildが成功した場合、ビルドがフォルダードロップゾーン( server dropzone datest appprojectなど)にコピーされ、共有ビナリのファイルがチェックインされます。

-buildが失敗した場合、共有ビナリーにコピーされたファイルにチェックアウトが元に戻されます。

これが非常にうまく機能することがわかりました。 AppProjectは常にCoreProjectから最新のビットで構築されているため、壊れた変更があるかどうかはすぐにわかります。 TFSに共有ビナリーをチェックインすることにより、特定のバージョンを取得し、その時点で使用されていたCoreProjectから同じDLLを使用してコードを実行できます。また、私は最新のものを手に入れる必要があり、私のローカルマシンも最新のビットで構築しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top