linux - 无法在 Linux 上运行 F# Chiron Json 序列化程序

标签 linux f# mono visual-studio-code

我无法获得 Chiron使用 VS Code 在 Elementary OS 上工作的 Json 序列化程序。

在 Windows 上它可以正常工作,正如我测试的那样。如果我没记错的话,它在 MacOS 上也能正常工作。

这是最小的无效解决方案:

这是脚本文件App.fsx:

#load "paket-files/include-scripts/net46/include.chiron.fsx"

open Chiron

printfn "%A" (Object <| Map.ofList [ "foo", String "bar" ] |> Json.format)

这是 paket.dependencies 文件:

source https://www.nuget.org/api/v2
nuget Chiron

必须生成包含脚本。从 IDE 或通过执行 mono ./paket/paket.exe generate-include-scripts

当我运行 fsharpi App.fsx 时,出现以下错误:

/tmp/test/stdin(0,1): error FS0078: Unable to find the file 'FParsecCS.dll' in any of
 /usr/lib/mono/4.5
 /tmp/test/./packages
 /tmp/test
 /usr/lib/cli/fsharp/
System.TypeInitializationException: The type initializer for 'Escaping' threw an exception.
  at Chiron+Formatting+formatObject@728-1.Invoke (System.Tuple`2[T1,T2] tupledArg) [0x0000f] in <57e2953614a049a0a74503833695e257>:0 
  at Microsoft.FSharp.Core.FSharpFunc`2[T,TResult].InvokeFast[V] (Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] func, T arg1, TResult arg2) [0x00018] in <566a0818dff9fae1a745038318086a56>:0 
  at Chiron+Formatting+join@667-2[a].Invoke (System.Text.StringBuilder b) [0x00029] in <57e2953614a049a0a74503833695e257>:0 
  at Chiron+Formatting+join@666-1[a].Invoke (Microsoft.FSharp.Collections.FSharpList`1[T] values, System.Text.StringBuilder b) [0x00013] in <57e2953614a049a0a74503833695e257>:0 
  at Microsoft.FSharp.Core.OptimizedClosures+Invoke@3252[T2,TResult,T1].Invoke (T2 u) [0x00001] in <566a0818dff9fae1a745038318086a56>:0 
  at Chiron+Formatting+formatObject@726-6.Invoke (System.Text.StringBuilder x) [0x00013] in <57e2953614a049a0a74503833695e257>:0 
  at Chiron+Formatting+formatObject@726-7.Invoke (System.Text.StringBuilder x) [0x00001] in <57e2953614a049a0a74503833695e257>:0 
  at Chiron+Formatting+formatObject@726-8.Invoke (System.Text.StringBuilder x) [0x00001] in <57e2953614a049a0a74503833695e257>:0 
  at Chiron+Formatting+Json.format (Chiron+Json json) [0x00013] in <57e2953614a049a0a74503833695e257>:0 
  at <StartupCode$FSI_0001>.$FSI_0001.main@ () [0x00046] in <6e3acc116b9749ea9b5dc27663d21170>:0 
  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 <8f2c484307284b51944a1a13a14c0266>:0 
Stopped due to error

如果您不在 Linux 上,可以像这样使用 docker 重现错误:

docker run -it -v $(pwd):/tmp/ttt fsharp/fsharp bin/bash

更新

直接引用程序集也不起作用:

#r "packages/Aether/lib/net35/Aether.dll" 
#r "packages/FParsec/lib/net40-client/FParsecCS.dll"
#r "packages/FParsec/lib/net40-client/FParsec.dll"
#r "packages/Chiron/lib/net40/Chiron.dll" 

open Chiron

printfn "%A" (Object <| Map.ofList [ "foo", String "bar" ] |> Json.format)

最佳答案

您需要包括:

 #r "packages/FParsec/lib/net40-client/FParsecCS.dll"
 #r "packages/FParsec/lib/net40-client/FParsec.dll"

也是。

您可能遇到了 this issue

关于linux - 无法在 Linux 上运行 F# Chiron Json 序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41790025/

相关文章:

linux - 未引用 bash 参数/变量的风险

f# - 从Seq继承

f# - FSharp.Data : Transform multiple columns to a single column (dictionary result)

visual-studio - 找不到资源文件 "**/*.resx"。 (MSB3552) 在 VS for Mac 上

linux - 如何在 Putty 上通过 putty 远程连接使用 gedit

linux - 提交后 Hook 有问题

linux - git 子模块已经存在但它不存在?

f# - 如何在 Visual Studio 中设置 F# 4.0?

c# - 在不安装 GTK 的情况下将 GTK Sharp 应用程序部署到 Windows#

asp.net - 关于 ASP.NET,Mono 是否有任何真正的限制?