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