2016-05-02 4 views
0

これはあまりにも広い質問ですが怖いです。しかし、私はまだこの仕事を始める手がかりがないので、グーグルで何も出てこないので、手がかりも助けになるでしょう...どのように実行時リンク "プラグイン"リファレンスdlls

私はリファレンスをリンクするたびにビルドする前に追加します。 私が必要とするのは、dirに追加された参照を追加できることです。 それは私がdllをdirに置いて、そのdllが存在する場合にのみRUNTIMEに追加することを可能にします。

だから、何も開始--->なし追加機能で追加されていないことを

  • を言います。
  • は私が1.DLL ----> 1.DLLに存在する特徴が
  • は私が2.dll現在に存在する機能が追加されなければならない----> 2.dll現在追加追加されなければならない追加

など...

プラグインに似ているので、これらのdllプラグインを呼び出します。

ご協力いただきありがとうございます。 Patrick

+1

これまでに何を試しましたか? 1.dllと2.dllがプラグインインフラストラクチャをサポートするために同じ契約を実装していると仮定します。これは多くの方法で達成できます。 Rawリフレクションを使用してアセンブリをロードおよび呼び出したり、[MEF](https://mef.codeplex.com/)のようなフレームワークを使用することができます。あなたが求めているものを実装するための記事やサンプルがたくさんあります。 – vendettamit

+0

はい、答えを入力するときにMEFフレームワークを忘れました。それがおそらく簡単な解決策になるでしょう。 – MarcoLaser

+0

私の悪い私は試したことがあります...これは私の知識の外にあるので(そして私はwpfにも新しくなっています)、何もありません。私が言ったように、私は様々なキーワードのためにgoogled。しかし、私の検索は何ももたらさなかった。しかし、あなたのコメントをありがとう!今私には何かがあります。 – Patrick

答えて

1

新しいAppDomainを作成し、appRelativeSearchPathをプラグインフォルダに設定することができます。次に、新しいAppDomainのLoadメソッドを使用して、追加のアセンブリを読み込むことができます。

アプリケーションのメインAppDomainの新しいAppDomainからクラスにアクセスする場合は、AppDomainのCreateInstanceAndUnwrapメソッドを使用してクラスをインスタンス化できます。しかし、あなたのプラグインアセンブリのクラスは、これが機能するにはMarshalRefObjectを継承しなければなりません。

これが正しい方向に向いてくれることを願っています。

関連する問題