当前位置:  开发笔记 > 编程语言 > 正文

Reflection.Net:如何加载依赖项?

如何解决《Reflection.Net:如何加载依赖项?》经验,为你挑选了1个好方法。

我尝试使用Reflection向我的Windows.Net应用程序添加一个插件系统; 但是当有依赖关系的插件时它会失败.

Addon类必须实现一个接口'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();

当addon不使用dependencie时,它工作得很好.但是如果我的插件引用并使用另一个在磁盘上的插件附近保存的DLL(C:\ Temp\TestAddon\MyTools.dll),则会失败:
System.IO.FileNotFoundException:无法加载文件或程序集'MyTools.dll '或其中一个依赖项.

我不想在我的可执行文件附近复制插件DLL,我怎么能告诉.Net运行时在"C:\ Temp\TestAddon"中搜索任何依赖?

请注意添加

Assembly assembly = Assembly.LoadFile(@"C:\Temp\TestAddon\MyTools.dll");

不要改变任何东西.



1> Andreas Tsch..:

如果MyTools.dll位于同一目录Addon.dll,所有你需要做的就是打电话Assembly.LoadFrom,而不是Assembly.LoadFile让你的代码工作.否则,处理AppDomain.AssemblyResolve事件是要走的路.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有