我有一个最初用.net 4.0编写的应用程序。此应用程序是指针对.net 2.0的库。最近,我不得不将此库升级到.net 4.0,而不更改任何公开方法的签名。但是将库升级到.net 4.0,调用此库的exe会抛出异常
Unhandled Exception: System.MissingMethodException: Method not found:
'Void InteropSpace.myClass.Table(System.String[,] ByRef, System.String[,])'. at
ConsoleApplication1.Program.Main(String[] args)
我在.net 2.0版本的库和ILSpy中库的.net 4.0版本中检查了此方法(表)。功能的签名尚未更改。我有点恼火,为什么我无法弄清楚这种奇怪的行为。
更新: 旧库(.net 2.0)中导出函数的签名:
.method public hidebysig static
void Table (
[out] string[, ]& TableControl2,
string[, ] TableControl
) cil managed
新库(.net 4.0)中导出函数的签名:
.method public hidebysig static
void Table (
[out] string[0..., 0...]& TableControl2,
string[0..., 0...] TableControl
) cil managed
我并不完全相信这就是它失败的原因。有什么区别
string[0..., 0...]
和
string[, ]
答案 0 :(得分:0)
可能是.net 4中存在该方法的新重载。本文可能有所帮助..
http://www.mikeplate.com/2008/09/26/missingmethodexception-and-waitone/