2

私の SAAS 会社には、アプリケーション アルファとアプリケーション ベータと呼ばれる 2 つの C#.NET 製品があります。どちらも Core と呼べるいくつかのライブラリを参照しています。

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

Alpha と Beta は Core を参照する必要がありますが、コードを直接参照することは避けようとしています。では、これらのコンポーネント間でアセンブリを参照するにはどうすればよいでしょうか?

各コンポーネントには、SVN に保存された、参照する必要がある他のコンポーネントからの DLL を含むディレクトリを含めることができますが、これは、新しい DLL を Alpha および Beta にプッシュするためにコアが更新されるたびに、余分な労力を意味します。

または、中央の SVN 化された場所 (および/または GAC) に DLL を格納することもできますが、それは、コアが更新されるたびに、他のすべての人が新しい DLL をプルするために余分な労力を必要とすることを意味します。

私たちが見落としている 3 番目のオプションはありますか?

4

3 に答える 3

0

私が作成した一連の Web コントロールを利用する 5 つのアプリケーションがある、似たようなものがあります。コントロールは、モジュール化のために一連の DLL にコンパイルされ、それらを利用するアプリケーションは別のサーバー上で動作します。

私がしていることは、VS2008 のビルド ユーティリティを利用して、リリース ビルドの実行時にコンパイル済み (更新済み) DLL を運用サーバーにコピーするバッチ ファイルを実行することです。

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

したがって、リリース ビルドは完全に自動化でき、実稼働 DLL のバージョン間の DLL の地獄のような違いについて心配する必要はありません。

これが役に立てば幸いです、JP

于 2009-06-25T19:19:36.723 に答える
0

アルファ版とベータ版の再構築スクリプトでアーティファクトを作成し (つまり、コアを構築)、その場所を参照する特定の場所にコア ビルドの結果を配置することができます。

于 2009-06-25T19:20:23.867 に答える
0

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

それを避けたい場合は、おそらくこれらがより良い選択肢です。ただし、コア プロジェクトが非常に安定しており、頻繁に変更されない限り、ファイルを GAC に配置することは避けたいと思います。DLL をローカルに配置すると、柔軟性が大幅に向上します。

各コンポーネントには、SVN に保存された、参照する必要がある他のコンポーネントからの DLL を含むディレクトリを含めることができますが、これは、新しい DLL を Alpha および Beta にプッシュするためにコアが更新されるたびに余分な労力を意味します。

これは、優れたビルド システムを使用すれば、かなり簡単に処理できます。このアプローチにはいくつかの欠点 (つまり、ビルド システムでの実行可能な依存関係) がありますが、依存する各プロジェクトが必要に応じて異なるバージョンを持つことができるなど、いくつかの利点があります。

于 2009-06-25T19:22:59.383 に答える