RProvider和Deedle需要不同的FSharp.Core版本

时间:2015-12-15 07:02:49

标签: c# .net r deedle r.net

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

0 个答案:

没有答案