由于再次安装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编译器所需的版本。
下载并在我的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的引用并将其编译好。
答案 0 :(得分:0)
我认为这里有几个不同的问题:
FSharp.Core 程序集版本控制与 nuget 版本控制不同
FSharp.Core是FSI加载的隐式依赖项,因此您无法从脚本中引用其他版本
fable-compiler需要一个有效的F#安装,它不会通过npm发送任何F#依赖项
TL; DR:您可能需要安装VS2015或尝试使用此软件包:https://www.nuget.org/packages/FSharp.Compiler.Tools/