私は過去数週間にわたってこれをクラックしようとしてきましたが、まだ良い解決策を見つけていません。うまくいけば、ここで答えを得ることができます。
2 つのアセンブリ (ZA & ZB) があり、どちらも共通のプロジェクト/dll (ZC) を指していますが、バージョンが異なる可能性があります (つまり、同じ dll 名、同じ名前空間、一部のクラスが異なる場合があります)。各アセンブリは単独で機能しますが、実行時に一方が他方によってロードされると (たとえば、A が B をロードする)、それを機能させることができません。助けが要る。
セットアップは次のとおりです。
- ZA は ZC (共通) バージョン 1.1 に依存します。
- ZB は ZC バージョン 1.0 に依存します
ZA はロードする必要があり、実行時に ZB (ZC に依存) に何かをロードする必要があります。
ZA はマスター アプリです。そのディレクトリの下に、すべての ZB とその依存関係 (ZC) を配置したいbinplugins ディレクトリがあります。plugins/plugin-ZB
これが私がこれまでに試したことです:
Assembly.Load()同じバージョンの dll を使用 - 正常に動作しました。
Assembly.Load()異なるバージョンの dll を使用すると、ZB が読み込まれますが、メソッドを実行すると、メソッドが見つからないという例外が発生します。
AppDomain.Load()ファイルが見つからないというエラーが発生しました。デリゲートを使用してアセンブリを解決することさえしました。
ZC に関するいくつかの詳細: - 一部のメソッドは public static です (一部はそうではありません)。例Log.Log("hello");
- 一部は値を返す場合があります (プリミティブまたはオブジェクト)。- 一部のメソッドは非静的 (および戻り値) です。
ヘルプ?-ティア