编译 Deedle

728 篇文章 1 订阅
39 篇文章 0 订阅

编译 Deedle


Deedle 中含有 RProvider。

要编译 Deedle,需要先下载 R,地址:

http://cran.cnr.berkeley.edu/bin/windows/base/

还要在 R 控制台中安装 zoo 包:

install.packages("zoo")

但是,测试时还有一个错误:

未能加载文件或程序集“FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

这是由于在 \tests\Deedle.Tests\bin\Release 目录下没有 FSharp.Core.dll

那么,原因何在?

是由于 \tests\Deedle.Tests\Deedle.Tests.fsproj 中

    <Reference Include="FSharp.Core, Version=$(TargetFSharpCoreVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
      <Private>False</Private>
    </Reference>

把这个属性改成 True 就可以了。


另外,打开测试项目,发现有许多引用不存在。

再看测试项目,其中有许多引用的 .dll 不存在:

FSharp.Literate

FSharp.CodeFormat

是需要安装 FSharp.Formatting 包,即,在 VS 包控制台中执行:

install-package FSharp.Formatting

还有三个:

FSharp.CompilerBinding

FSharp.Data.DesignTime

FSharp.PowerPack.Metadata


=============================

\Deedle-master\tests\Deedle.Documentation.Tests\Deedle.Documentation.Tests.fsproj

  <ItemGroup>
    <Reference Include="FSharp.CodeFormat">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.CodeFormat.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.CompilerBinding">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.CompilerBinding.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.Data.DesignTime">
      <HintPath>..\..\bin\FSharp.Data.DesignTime.dll</HintPath>
    </Reference>
    <Reference Include="FSharp.Literate">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.Literate.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.Markdown">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.Markdown.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.MetadataFormat">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.MetadataFormat.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.PowerPack.Metadata">
      <HintPath>..\..\packages\FSharp.Formatting.2.0.2\lib\net40\FSharp.PowerPack.Metadata.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="mscorlib" />
    <Reference Include="nunit.framework">
      <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="RazorEngine">
      <HintPath>..\..\packages\RazorEngine.3.3.0\lib\net40\RazorEngine.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Numerics" />
    <Reference Include="System.Web" />
    <Reference Include="System.Web.Razor">
      <HintPath>..\..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
      <Private>True</Private>
    </Reference>
  </ItemGroup>

实际上重点就是三个:FSharp.Formatting、FSharp.CompilerBinding、FSharp.Data。为什么这三个不放在包里自动安装?

改一下路径,也就好了:

 <ItemGroup>
    <Reference Include="FSharp.CodeFormat">
      <HintPath>..\..\packages\FSharp.Formatting.2.4.17\lib\net40\FSharp.CodeFormat.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.CompilerBinding">
      <HintPath>..\..\packages\FSharp.CompilerBinding\bin\Debug\FSharp.CompilerBinding.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.Data.DesignTime">
      <HintPath>..\..\packages\FSharp.Data.2.0.8\lib\net40\FSharp.Data.DesignTime.dll</HintPath>
    </Reference>
    <Reference Include="FSharp.Literate">
      <HintPath>..\..\packages\FSharp.Formatting.2.4.17\lib\net40\FSharp.Literate.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.Markdown">
      <HintPath>..\..\packages\FSharp.Formatting.2.4.17\lib\net40\FSharp.Markdown.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.MetadataFormat">
      <HintPath>..\..\packages\FSharp.Formatting.2.4.17\lib\net40\FSharp.MetadataFormat.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="FSharp.PowerPack.Metadata">
      <HintPath>..\..\packages\FSharp.Formatting.2.4.17\lib\net40\FSharp.PowerPack.Metadata.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="mscorlib" />
    <Reference Include="nunit.framework">
      <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="RazorEngine">
      <HintPath>..\..\packages\RazorEngine.3.3.0\lib\net40\RazorEngine.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Numerics" />
    <Reference Include="System.Web" />
    <Reference Include="System.Web.Razor">
      <HintPath>..\..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll</HintPath>
      <Private>True</Private>
    </Reference>
  </ItemGroup>

还有一个问题,即 Documentation.Tests.fs 中有一段不能编译。

    Literate.ProcessScriptFile
      ( Path.Combine(sources, file), template, Path.Combine(output, file),
        errorHandler = errorHandler,
        fsharpCompiler = compiler )

应该是 ProcessScriptFile 做过修改,没有后面的两个参数。因此,去掉后面的两个参数就能编译了。

    Literate.ProcessScriptFile
      ( Path.Combine(sources, file), template, Path.Combine(output, file))


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值