F# を使い始めたばかりで、FSharp PowerPack の特定のメソッドを使用すると System.MissingMethodException がスローされるという非常に奇妙な問題に遭遇しています。
これは、同じモジュール内のすべてのメソッドで発生するわけではありません。また、アセンブリをクラス ライブラリではなくアプリケーションとしてコンパイルしても発生しません。
再現手順:
- 2 つのアセンブリ (1 つのクラス ライブラリと 1 つのアプリケーション) を作成します。
- nunit.framework と FSharp.PowerPack DLL を両方のアセンブリへの参照として追加します。
各アセンブリで次のテスト フィクスチャを作成します。
open NUnit.Framework [<TestFixture>] type Tests() = class [<Test>] member self.OfSeq() = // Will always succeed Matrix.Generic.ofSeq [[1]] |> ignore [<Test>] member self.OfList() = // Will fail under certain conditions with a System.MissingMethodException Matrix.Generic.ofList [[1]] |> ignore end
- 両方のアセンブリをコンパイルします。
- NUnit で各アセンブリを開き、すべてのテストを実行します。
これを行うと、アプリケーションは問題なく実行されますが (すべてのテストに合格)、クラス ライブラリは次の例外で失敗します。
System.MissingMethodException : Method not found: 'Microsoft.FSharp.Math.Matrix`1<!!0> Generic.ofList(Microsoft.FSharp.Collections.FSharpList`1<Microsoft.FSharp.Collections.FSharpList`1<!!0>>)'.
at Temp2.Tests.OfList()
ここで何が起こっているのですか?
この問題を引き起こす別の方法は、matrix.PermuteColumns です。
追加情報:
- .NET 4.5 用に両方のアセンブリをコンパイルしています
- Visual Studio 2012 RC を使用してコンパイルしています
- NUnit バージョン 2.5.10.11092 を使用しています
- FSharp PowerPack バージョン 2.1.3.1 を使用しています (ただし、DLL プロパティには 2.0.0 と記載されています)
役立つ追加情報があれば教えてください。