1

このような設定が可能かどうか疑問に思います:

c:\ eflow \ proxy.dll(アプリケーションによってロードされるメインDLL)c:\ eflow \ application \ dynamic.dll(proxy.dllによって動的にロードされるDLL)c:\ eflow \dependency.dll(dynamic.dllに必要な依存DLL) )。

基本的に、DLLを動的にロードしたいのですが(クラスをインスタンス化するためなど)、そのDLLの依存関係を別の場所に保存します。

これは可能ですか?これらの依存DLLのコピーをすべてのサブディレクトリに置きたくありません...(署名されておらず、サードパーティのDLLであるため、GACにロードできません)

4

1 に答える 1

3

はい、これを行うことができます。

AppDomain.AssemblyResolveイベントを処理することにより、依存するアセンブリをどこからでもロードできます。アプリケーションが依存アセンブリが別のディレクトリにある可能性があることを知っている場合、アプリケーションはこのイベントを処理し(.Net Frameworkが最初にそこを探すため、アプリケーションディレクトリで見つからなかったことを自動的に意味します)、そこからアセンブリをロードしようとします。別の場所。

詳細については、アセンブリ負荷の解決を参照してください。

更新:この場合、代わりに、目的のアプリドメインのAppDomainSetup.PrivateBinPathプロパティに指定されたディレクトリを追加できると思います。これは、指定されたディレクトリがアプリケーションベースディレクトリのサブディレクトリである場合にのみ機能します。そうでない場合、このアプローチを使用するには、適切なアプリケーションベースディレクトリを使用して新しいAppDomainを作成する必要があります。

アセンブリロードのベストプラクティスも参照してください

于 2011-07-25T12:20:13.740 に答える