我想编写一个在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 Frame并返回Deedle帧列表)的目的。