无法从 Windows 服务调用动态加载的 DLL 中的类
Posted
技术标签:
【中文标题】无法从 Windows 服务调用动态加载的 DLL 中的类【英文标题】:Fail to invoke class in dynamic loaded DLL from windows service 【发布时间】:2012-12-19 07:34:01 【问题描述】:这是我在 C# DLL 中的类
namespace MyNS
public class MyClass
public static int Execute(string logKey,
string key,
XmlNode xmlPars)
return 0
我在运行时加载 DLL 并将 Class Type 加载到 _type 变量中。但是当我像这样从 Windows 服务调用函数 Execute 时:
counter = (int)_type.InvokeMember("Execute",
BindingFlags.Public |
BindingFlags.InvokeMethod |
BindingFlags.Static,
null,
null,
new object[]
logKey,
Key,
_xmlParams
);
我得到“调用的目标已抛出异常。” 我在这里做错了什么?
【问题讨论】:
在哪一行抛出异常?我尝试了一个类似的例子。你能发布你如何加载程序集和创建类型吗? 【参考方案1】:你是如何加载DLL的,你能分享一下动态加载dll的代码吗?
这是示例代码。
Assembly assembly = Assembly.LoadFrom("ABC.dll");
object o = Activator.CreateInstance(assembly.GetType("ClassName"));
/// then invoke the method
【讨论】:
感谢您的回复。我加载DLL的方式与您的相同。一切正常,但我发现如果 DLL(我的插件)驻留在服务的不同目录中,并且 DLL 引用了其他 DLL。我必须将其他DLL复制到Windows服务目录而不是Plugin目录。现在问题解决了。以上是关于无法从 Windows 服务调用动态加载的 DLL 中的类的主要内容,如果未能解决你的问题,请参考以下文章