我试图使用反射为我的Windows .Net应用程序添加一个插件系统,但当存在具有依赖关系的插件时,它会失败。
插件类必须实现一个名为'IAddon'的接口,并且必须有一个空构造函数。
主程序使用反射加载插件:
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),该DLL保存在与插件相邻的磁盘上,则会失败:
System.IO.FileNotFoundException: 无法加载文件或程序集'MyTools.dll'或其某个依赖项。
我不想将插件的DLL复制到我的可执行文件旁边,我该如何告诉.Net运行时在“C:\ Temp \ TestAddon \”中搜索所有依赖项?
请注意添加
Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");
请勿更改任何内容。