Reflection を使用して Windows.Net アプリケーションにアドオン システムを追加しようとしています。ただし、依存関係のあるアドオンがあると失敗します。
アドオン クラスは、インターフェイス 'IAddon' を実装し、空のコンストラクターを持つ必要があります。
メイン プログラムは、Reflection を使用してアドオンをロードします。
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\Addon.dll");
Type t = assembly.GetType("Test.MyAddon");
ConstructorInfo ctor = t.GetConstructor(new Type[] { });
IAddon addon= (IAddon) ctor.Invoke(new object[] { });
addon.StartAddon();
アドオンが依存関係を使用しない場合にうまく機能します。しかし、アドオンがディスクのアドオンの近くに保存されている別の DLL (C:\Temp\TestAddon\MyTools.dll) を参照して使用すると、失敗します:
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'MyTools.dll を読み込めませんでした' またはその依存関係の 1 つ。
アドオン DLL を実行可能ファイルの近くにコピーしたくありません。.Net ランタイムに "C:\Temp\TestAddon\" で依存関係を検索するように指示するにはどうすればよいですか?
追加することに注意してください
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
何も変更しないでください。