Fsharp.Core 4.4.0.0和寓言

时间:2017-02-09 04:00:02

标签: f# fable-f#

由于再次安装Fable,我无法编译任何东西。错误是:

  

内部错误:BuildFrameworkTcImports:没有解析   ' FSharp.Core,Version = 4.4.0.0,Culture = neutral,Pu   blicKeyToken = b03f5f7f11d50a3a':L1(启动)

我不知道如何在我的Windows机器上使用Visual Studio 2013获得Fsharp.Core,因为即使它只是一个dll,它似乎并不在npm上。

所以在" nuget包管理器控制台"我试过了:

Install-Package FSharp.Core -Version 4.4.0.0

它告诉我:

  

无法找到版本' 4.4.0.0'包&FS; FSharp.Core'。

所以,如果它不在npm上而不在nuget上那么它来自哪里?所有搜索都会导致nuget,但是没有Fable编译器所需的版本。

https://github.com/fsharp/fsharp/blob/master/lib/bootstrap/signed/.NETFramework/v4.0/4.4.0.0/FSharp.Core.dll?raw=true

下载

并在我的fsx中引用它:

#r "./fsharpcore/4.4.0.0/FSharp.Core.dll"
#r "./node_modules/fable-core/Fable.Core.dll"
open Fable.Core.JsInterop

然后尝试编译:

node node_modules\fable-compiler\index.js test.fsx .

同样的错误,我会尝试将dll复制到某个文件夹,以便Windows可以找到它

将Fsharp.Core.dll复制到C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.0.0

但同样的错误。所以检查了package.json并看到由于我使用的旧节点而安装了fable-compiler 0.0.10。不知道为什么它昨天工作但安装节点LTS

E:\tmp\riot>node --version
v6.9.5

将package.json更改为:

  "devDependencies": {
    "fable-compiler": "*",

然后再次运行npm install

然后将所有文件从https://github.com/fsharp/fsharp/tree/master/lib/bootstrap/signed/.NETFramework/v4.0/4.4.0.0复制到C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ FSharp.NETFramework \ v4.0 \ 4.4.0.0

将test.fsx中的引用设置为:

#r "C:/Program Files (x86)/Reference Assemblies/Microsoft/FSharp/.NETFramework/v4.0/4.4.0.0/FSharp.Core.dll"
#r "./node_modules/fable-core/Fable.Core.dll"
open Fable.Core.JsInterop

Fable.Import.Browser.console.log("Hello World")

编译:

E:\tmp\riot>node node_modules\fable-compiler\index.js --projFile test.fsx

得到错误:

  

fable-compiler 0.7.42:开始编译... F#项目包含   errors:commandLineArgs(L0,0):error FSHARP:多次引用   ' FSharp.Core.dll'不允许commandLineArgs(L0,0):错误   FSHARP:对FSharp.Core.dll'的多次引用不允许

这是因为fableconfig.json指向了另一个fsx文件,删除了test.fsx中对FSharp.Core.dll的引用并将其编译好。

1 个答案:

答案 0 :(得分:0)

我认为这里有几个不同的问题:

  • FSharp.Core 程序集版本控制与 nuget 版本控制不同

  • FSharp.Core是FSI加载的隐式依赖项,因此您无法从脚本中引用其他版本

  • fable-compiler需要一个有效的F#安装,它不会通过npm发送任何F#依赖项

TL; DR:您可能需要安装VS2015或尝试使用此软件包:https://www.nuget.org/packages/FSharp.Compiler.Tools/