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 バージョンのライブラリと .net 4.0 バージョンのライブラリで ILSpy で確認しました。関数のシグネチャは変更されていません。なぜこの奇妙な動作を理解できないのか、少しイライラしています。

UPDATE : 古いライブラリ (.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 に答える