kud*_*udi 6 mono f# typeloadexception visual-studio-code
通过此代码
module ObjectRe =
type BM = A | N
type Object = {
Name: string
Pattern: BM array
}
let patterns = [|{Name = "Pro"; Pattern = [|A;N;N;A|]} |]
Run Code Online (Sandbox Code Playgroud)
我总是收到此错误消息
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
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?我在Mac上使用Visual Studio Code.
谢谢
我也可以在macOS 10.11,mono 4.6上重现这个.
最小的复制是:
module X =
type Y = Y
let l = [| Y |]
Run Code Online (Sandbox Code Playgroud)
解决方法:
module X =
type Y = Y
let g = List.toArray [ Y ]
Run Code Online (Sandbox Code Playgroud)
所以你的情况替换两者的内部和外部 [| |]的声明.
为什么这只发生在VS Code/fsharpi而不是Xamarin?
如果启动活动监视器,您将看到VS Code/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您还可以检查来自交互式的第一条消息的版本(F# Interactive for F# 4.1可能是不同的).
最后,我相信这是单声道+动态组件的错误,由发出的代码触发fsi.编译此代码可以exe在所有平台上正常工作(如果检查生成的IL似乎很正常).
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |