gpt4 book ai didi

c# - 反射.Net : how to load dependencies?

转载 作者:IT王子 更新时间:2023-10-29 04:12:39 25 4
gpt4 key购买 nike

我尝试使用反射将插件系统添加到我的 Windows.Net 应用程序;但是当有依赖的插件时它会失败。

插件类必须实现接口(interface)“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),它会失败:
System.IO.FileNotFoundException:无法加载文件或程序集“MyTools.dll”或其依赖项之一。

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

注意添加

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

不要改变任何东西。

最佳答案

如果 MyTools.dllAddon.dll 位于同一目录中,您只需调用 Assembly.LoadFrom Assembly.LoadFile 使您的代码工作。否则,处理 AppDomain.AssemblyResolve 事件是可行的方法。

关于c# - 反射.Net : how to load dependencies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/181901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com