2009-06-25 12 views
2

私のSAAS社には、アプリケーションAlphaとアプリケーションベータと呼ばれる2つのC#.NET製品があります。どちらもコアと呼べるいくつかのライブラリを参照しています。コンポーネント間参照のためのDLLの検索方法

現時点では、コードベースは単一の.NETソリューションを使用して単一のSVNリポジトリに格納されたモノリシックであり、モジュール化/コンポーネント化を進めています。 2つのアプリケーションとコアライブラリの別々のリポジトリに分割しましたが、現在は次の問題に取り組んでいます:

AlphaとBetaはCoreを参照する必要がありますが、実際には正方形に戻るため、すべてのリポジトリをチェックアウトして同じ場所に配置する必要があります。したがってこれらのコンポーネント間でアセンブリを参照するにはどうすればよいですか?

各コンポーネントには、参照する必要がある他のコンポーネントのDLLを含むディレクトリがSVNに格納されている可能性がありますが、新しいDLLをAlphaとBetaにプッシュするためにCoreが更新されると、

または、私たちは中央のSVNの場所(および/またはGAC)にDLLを保存できますが、それは他の人が新しいDLLを取得するためにCoreが更新されるときに余分な労力がかかることを意味します。

私たちが見落としている3つ目の選択肢はありますか?

+1

なぜ派生ファイル(.DLL)をバージョン管理システム?ビルドスクリプトとプロセスを用意していますか? –

+0

今はありません。現在、アセンブリはVS2008のプロジェクトによって互いに参照されています。それらはすべて同じソリューションと単一のリポジトリに入っているからです。しかし、異なるソリューションや異なるリポジトリにいる場合は、これはオプションではありません。だから私はコンポーネントをリンクするDLLを管理する最善の方法を決定しようとしています。 –

答えて

0

私には、私が構築した一連のWebコントロールを利用する5つのアプリケーションがあります。コントロールは、モジュール化のための一連のDLLにコンパイルされ、それらを利用するアプリケーションは別のサーバーに存在します。

VS2008のビルドユーティリティを使用して、リリースビルドの実行時にコンパイル済みの(更新された)DLLを本番サーバーにコピーするバッチファイルを実行します。

これは、DLL(またはDLL)をビルドするプロジェクトに移動し、そのプロジェクトを右クリックして[プロパティ]をクリックすることで実行できます。次に、BUILD EVENTSタブに移動します。ここでは、Pre-CompileコマンドラインとPost-Compileコマンドラインテキストボックスが表示されます。

したがって、リリースビルドは完全に自動化できるため、プロダクションDLLのバージョン間でDLLの違いが気になることはありません。

希望これは、あなたがAlphaとbetatがアーティファクト(すなわちコアを構築する)を作成し、コアの結果、その場所を参照し、特定の場所で構築を配置するために、スクリプトを再構築持っている可能性が JP

+0

ありがとうございます。しかし、どのように異なるサーバー間でDLLを参照していますか?ネットワーク共有を使用していますか?私たちはDLLをネットワーク共有に保存することを検討していましたが、それによって開発者の作業コピーが互いに衝突する可能性があり、オフィスネットワークは少し薄れているため、依存したくありません。 –

0

に役立ちます。

+0

これは依然として、各開発者がCoreの個別にチェックアウトする必要があります。これは、彼が避けようとしているものです。 –

+0

Reed CopseyはCoreを利用可能にし、特定の場所に構築する必要があると述べています。これは私たちが望んでいるからです。私は、あなたが "アーティファクトを作る"という意味に興味があります。これは私が以前に遭遇したことのないVisual Studio用語ですか? –

0

SVN:externalsを使用できます。このタイプのシナリオ用に設計されています。

これを避けたい場合は、おそらくこれが良いオプションです。しかし、あなたのコアプロジェクトが非常に安定していて、頻繁に変更されない限り、ファイルをGACに入れないでください。 DLLをローカルにすると、はるかに柔軟になります。

各コンポーネントは、SVNに格納参照する必要がある他のコンポーネントからのDLLを含むディレクトリを持つことができますが、これはいつでもコアがアルファおよびベータ版に新しいDLLを押し出すように更新された余分な労力を意味します。

これは、適切なビルドシステムでかなり簡単に処理できます。このアプローチにはいくつかの欠点があります(ビルドシステムでのexpenduable depdenencies)。しかし、それぞれの依存プロジェクトに必要に応じて異なるバージョンを持たせるなど、いくつかの利点があります。

+0

私はSVNを見ていきます:externals、ありがとう。多分、私は、各リポジトリの外部依存関係を読み取り専用モードでチェックアウトするように設定する方法を見つけることができます。たとえば、私がベータ版で作業している間にコアを駄目にしないようにするためです。 –

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええ投稿: –

関連する問題