编译 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”或它的某一个依赖项。
系统找不到指定的文件。
这是因为在 estsDeedle.TestsinRelease 文件夹下没有 FSharp.Core.dll
那么,原因何在?
是因为 estsDeedle.TestsDeedle.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 estsDeedle.Documentation.TestsDeedle.Documentation.Tests.fsproj
<ItemGroup>
<Reference Include="FSharp.CodeFormat">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.CodeFormat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.CompilerBinding">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.CompilerBinding.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.Data.DesignTime">
<HintPath>....inFSharp.Data.DesignTime.dll</HintPath>
</Reference>
<Reference Include="FSharp.Literate">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.Literate.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.Markdown">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.Markdown.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.MetadataFormat">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.MetadataFormat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.PowerPack.Metadata">
<HintPath>....packagesFSharp.Formatting.2.0.2lib
et40FSharp.PowerPack.Metadata.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="mscorlib" />
<Reference Include="nunit.framework">
<HintPath>....packagesNUnit.2.6.3lib
unit.framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="RazorEngine">
<HintPath>....packagesRazorEngine.3.3.0lib
et40RazorEngine.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>....packagesMicrosoft.AspNet.Razor.2.0.30506.0lib
et40System.Web.Razor.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
实际上重点就是三个:FSharp.Formatting、FSharp.CompilerBinding、FSharp.Data。
为什么这三个不放在包里自己主动安装?
改一下路径。也就好了:
<ItemGroup>
<Reference Include="FSharp.CodeFormat">
<HintPath>....packagesFSharp.Formatting.2.4.17lib
et40FSharp.CodeFormat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.CompilerBinding">
<HintPath>....packagesFSharp.CompilerBindinginDebugFSharp.CompilerBinding.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.Data.DesignTime">
<HintPath>....packagesFSharp.Data.2.0.8lib
et40FSharp.Data.DesignTime.dll</HintPath>
</Reference>
<Reference Include="FSharp.Literate">
<HintPath>....packagesFSharp.Formatting.2.4.17lib
et40FSharp.Literate.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.Markdown">
<HintPath>....packagesFSharp.Formatting.2.4.17lib
et40FSharp.Markdown.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.MetadataFormat">
<HintPath>....packagesFSharp.Formatting.2.4.17lib
et40FSharp.MetadataFormat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="FSharp.PowerPack.Metadata">
<HintPath>....packagesFSharp.Formatting.2.4.17lib
et40FSharp.PowerPack.Metadata.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="mscorlib" />
<Reference Include="nunit.framework">
<HintPath>....packagesNUnit.2.6.3lib
unit.framework.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="RazorEngine">
<HintPath>....packagesRazorEngine.3.3.0lib
et40RazorEngine.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>....packagesMicrosoft.AspNet.Razor.2.0.30506.0lib
et40System.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))