1

我想编写一个在 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 框架列表)的目的。

4

0 回答 0