• 締切済み

共有DLLの参照方法

共有DLLのインストールパスが変わる(Windowsがインストールされたパーティションのマッピングの違い,X86とX64の違い,ユーザーがカスタムインストールしているなど) EXEとの相対パスが変わる(ZIPで圧縮されている場合の回答位置など) DLLの種類やその中に含まれるクラスなどの定義は変わらない レジストリなどを介してファイルパスはわかる という事になるわけですがこういった場合の参照はどのように追加すればよいのでしょうか? どぼん氏のプラグイン機能を持つアプリケーションを作成するのような実装では インターフェースをEXEか別のDLLでインターフェースをクラス分全て持たなければならない インターフェースを持つDLLと共有DLL、インターフェースを持つDLLとEXEの双方の相対パスが変えられない またはインターフェースを持つDLLの絶対パスが変えられない といった問題が回避できませんでした。 環境はWindows Vista x64+Visual Studio 2005です。

みんなの回答

回答No.1

ピッタリあてはまるかどうかは、わからないですが… System.ReflectionのAssemblyオブジェクト等を使用すれば、直接ファイル名で Load出来るので、何とかなるかもしれません。 詳細は以下のページ内の「リフレクション」の部分辺りを参照してください。 http://dobon.net/vb/dotnet/index.html#programing ただ、私もうろ覚えなんですが、この方法は実装がかなり面倒です。 必要なメソッド、プロパティの名前がわかっていれば、その辺りは面倒でも何とかなるんですが、 イベントをハンドルしようとすると、確かデリゲートを使って、イベントを イベントハンドラに何とかして結び付けなければいけなかったはず。 ちなみに私の場合は、昔「DLLがあっても無くても、それなりに動くようにしてくれ」と 言われて、かなり難儀した覚えがあります。

izayoimizuki
質問者

お礼

う~ん・・・ System.ReflectionのAssemblyオブジェクトによる 限定名での読み込みが近いかもしれません。 私の考えている事はシステムにDLLを登録したいに相当すると思います。

すると、全ての回答が全文表示されます。

関連するQ&A