2

コンポーネントをオンデマンドでダウンロードする .NET クライアント ソフトウェア パッケージを構築しようとしています。

メインの実行可能ファイルと他の 20 個の dll ファイルに分割されたプログラムがあるとします。メインプログラムはそのうちの 3 つを参照していますが、とにかく他のいくつかを参照しています...依存構造のようなある種のツリーがあります。

私が達成しようとしているのは、メインの実行可能ファイルのみを配布し、サーバーの場所からオンデマンドで他のすべてを取得することです。

このようなもの: メイン プログラムとこれらすべての dll プロジェクトは 1 つのソリューションにあり、他のソリューションと同様に一緒に構築されます。配布中は、exe のみが配布され、他の dll (使用されているいくつかのサードパーティ製ライブラリを含む) は、ダウンロード可能なサーバーの場所に置かれます。

exe が実行され、いくつかの UI が表示されます。ユーザーがメニュー項目をクリックすると、dll ファイルの別の UI ウィンドウが表示されるため、OS は dll (そこにはありません) を探します。介入して、必要な dll をダウンロードします。サーバー、exeの横に置き、OSが最初からそこにあったかのようにロードします。

これは、共通の Interface クラスといくつかのリフレクション マジックを使用することで実現できるように見えますが、私はそれ以上のこと、単一のソリューションで dll を完全に構築すること、サード パーティ ライブラリのオンデマンド ダウンロードを含むことを望んでいました。

これを行う方法はありますか?

4

3 に答える 3

1

カスタムの場所からアセンブリをロードできるAppDomain.AssemblyResolveeventを探しています。
他の反省は必要ありません。

于 2010-12-21T14:57:05.923 に答える
1

現在のアプリ ドメインの AppDomain.ResolveAssembly および AppDomain.ResolveType イベントのイベント ハンドラーを提供し、アセンブリを読み込みます。

ただし、アセンブリを適切なコンテキストにロードするように注意してください: http://msdn.microsoft.com/en-us/library/dd153782.aspx

于 2010-12-21T14:58:58.387 に答える
1

アセンブリが見つからないときに発生する AssemblyResolve イベントをキャッチし、検出しようとするアセンブリをダウンロードできます。

この記事を読む必要があります。

于 2010-12-21T15:00:18.747 に答える