我想编写一个在 C# 应用程序中使用的 F# 库。目的是 F# 库获取输入 Deedle Frame 并使用 R 脚本计算并返回输出 Deedle Frame。因此,在我的 Visual Studio 2013 解决方案中,有两个项目:一个 F# 库(称为 RRunner)和一个 C# 控制台应用程序(使用 RRunner 库)。这两个项目都使用 Nuget 包:Deedle.RPlugin
type RRunner() =
static member CreateFrameList(input: Frame<int,string>) : Frame<int,string> =
R.assign("input", input) |> ignore
let script = R.source(rScriptPath)
let result: Frame<int, string> = script.GetValue()
result
内部 C# 代码
var result = RRunner.RRunner.CreateFrameList(inputFrame);
上面的 F# 代码运行良好。但是,当我将CreateFrameList方法的返回类型更改为:
static member CreateFrameList(input: Frame<int,string>) : List<Frame<int,string>> =
R.assign("input", input) |> ignore
let script = R.source(rScriptPath)
let result: List<Frame<int, string>> = script.GetValue()
result
我可以成功构建 F# 项目,但无法构建 C# 项目。错误信息:
Assembly 'RRunner, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' which has a higher version than referenced assembly 'FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
我的代码有什么问题?以及如何解决这个问题?或者有没有其他方法可以解决我在 C# 代码中运行 R 脚本(接收 Deedle 框架并返回 Deedle 框架列表)的目的。