1

我有一个最初用 .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[, ]
4

1 回答 1

0

可能是.net 4中该方法有一个新的重载。这篇文章可能会有所帮助..

http://www.mikeplate.com/2008/09/26/missingmethodexception-and-waitone/

于 2012-12-10T07:23:07.840 回答