2016-09-20 12 views
5

私はいつもこのエラーメッセージF#System.TypeLoadException

System.TypeLoadException: Could not load type 'FSI_0007+ObjectRe+Object[]' from assembly 'FSI-ASSEMBLY, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. 
    at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) 
    at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in <94fd79a3b7144c54b4cb162b50fc7761>:0 
Stopped due to error 

は誰のアイデアを持っていますか?私はMacでVisual Studio Codeを使用します。

ありがとうございました

+1

パターン定義の最後に '|]'を閉じることができなかったようです。 –

+0

申し訳ありませんコピー中に忘れました:/それは問題ではありません – kudi

+4

FWIW、上記のコードはWindows 10のVisual Studio 2015で問題なく実行されるため、環境に関連する問題が発生する可能性があります。 –

答えて

7

また、これはmacOS 10.11、mono 4.6でも再現できます。

最小限の再現がある:

module X = 
    type Y = Y 
    let g = List.toArray [ Y ] 

だからあなたの場合には両方インナー[| |]宣言を置き換える:回避策

module X = 
    type Y = Y 
    let l = [| Y |] 

なぜこれはVS Code/fsharpiでのみ発生しますが、Xamarinでは発生しません。アクティビティモニタを起動した場合

F# Interactive for F# 4.1をあなたはVSコード/ fsharpi /Library/Frameworks/Mono.framework/Versions/4.6.0/lib/mono/4.5/fsi.exeバイナリ使用していることがわかりますが、Xamarin Studioはあなたがまた、インタラクティブから最初のメッセージのバージョンを確認することができますFCS Xamarin Studio.app/Contents/Resources/lib/monodevelop/AddIns/BackendBindings/MonoDevelop.FSharpInteractive.Service.exe使用して、それらがかもしれません異なる)。

最後に、これはfsiによって生成されたコードによってトリガされたモノ+ダイナミックアセンブリのバグだと思います。このコードをexeにコンパイルすると、すべてのプラットフォームで正常に動作します(生成されたILがかなり正常であるかどうかを確認すると)。