【发布时间】:2015-02-23 22:23:22
【问题描述】:
我正在尝试在 C# 项目的连接实用程序中使用 .CreateInstance(),同时序列化 XML。 .Unwrap() 用于解开可序列化的返回类型并获取我正在尝试创建的类型的实例。
String fileToLoad = @"D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model";
String file = Path.GetFileName(fileToLoad);
AbstractResponseMessageData response =
(AbstractResponseMessageData)Activator.CreateInstance(file, responseName).Unwrap();
我的程序集 RPM_Model @"D:\RPMOpen\svnCobra\conversion\aui\Model\bin\Debug\RPM_Model" 加载正常,但由于 responseName 中的 ARC_LOGONRS 类型,我收到以下错误:
方法 ConnectUtil.Execute 中的错误: 无法从程序集
RPM_Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null加载类型ARC_LOGONRS。
现在,这就是我陷入错误的原因:
1.我确实引用了错误中指定的程序集。
2.我的 GAC 中没有任何东西覆盖我的 /Debug 文件夹中的 .dll。
3. 我已确保我拥有正确版本的 .dll。
4. .dll 没有其他依赖项。
5. 我的项目和 .dll 具有相同的目标平台。
6. 我知道我正确地引用了程序集,就好像我将 ARCLOGON_RS 放在我的代码中并将鼠标悬停在它上面我看到了
类 RPM.Model.Data.ARCLOGON_RS
我可以f12 关注它以查看它的属性。
7. 我已经清理并重建了这两种解决方案。
8.类型确实有一个公共的默认构造函数,并且类是公共的。
9. .dll 在 参考节点中。
10.我确实将正确的程序集名称作为参数传递。
我的问题是是否有人对我的项目为什么会抛出此错误有任何其他想法,以及我如何着手修复它,因为我已经完全用完了诊断。
非常感谢您的帮助。
【问题讨论】:
-
该类型是否有公共的默认构造函数?
-
@RufusL 是的,抱歉,忘记了,已编辑问题。
-
愚蠢的问题,但 DLL 是否与您正在运行的应用程序存在于同一文件夹中?
-
有内部异常吗?根据:msdn.microsoft.com/en-us/library/…,原因可能是DllNotFound,EntryPointNotFound,或者TypeAccess异常。这至少应该有助于缩小范围。
-
内部异常只是将我指向
AbstractResponseMessageData行。从这三个中我认为它必须是 EntryPointNotFound 但我不知道如何进一步诊断异常。
标签: c# dll assemblies createinstance