当其中一个引用从.net 2.0升级到.net 4.0时,C#(。NET 4.0)应用程序抛出System.MissingMethodException

时间:2012-12-10 06:04:09

标签: c# .net .net-4.0 interop .net-2.0

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

1 个答案:

答案 0 :(得分:0)

可能是.net 4中存在该方法的新重载。本文可能有所帮助..

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