嗨,我是个菜鸟,问这个新手问题,请原谅我。
我已在我的本地目录
中成功安装了FSharpChart...
Added package 'MSDN.FSharpChart.dll.0.60.0' to folder 'C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Expert in F\packages'
Added package 'MSDN.FSharpChart.dll.0.60.0' to 'packages.config'
Successfully installed 'MSDN.FSharpChart.dll 0.60.0' to Expert in F
现在,如果我这样做
#load "FSharpChart.fsx";;
^^^^^^^^^^^^^^^^^^^^^^^
stdin(4,1): error FS0078: Unable to find the file 'FSharpChart.fsx' in any of
C:\Users\Fagui\AppData\Local\Temp
在这个文件夹里面,我看到一个nupkg文件和一个lib目录 在lib目录中,有一个dll和一个pdf文件, 但我没有看到任何.fsx文件。
基本上,F#已经将软件包安装在当前项目的活动文件夹中,而F#interactive是在另一个文件夹中?有点奇怪吗?
我应该再安装一次包吗?或者它的方法是什么?
感谢
更新 我不知道为什么,但显然当我安装FSharpChart包时,我只得到了dll,没有fsx文件 我设法加载它
#I @"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Expert in F"
#r @"packages\MSDN.FSharpChart.dll.0.60\lib\MSDN.FSharpChart.dll";;
不幸的是,在F#interactive
中键入脚本open MSDN.FSharp.Charting
let rnd = System.Random()
let rand() = rnd.NextDouble()
let randomPoints = [for i in 0 .. 1000 -> 10.0 * rand(), 10.0 * rand()]
randomPoints |> FSharpChart.Point;;
不会产生任何图表,只会返回一个列表
val rnd : Random
val rand : unit -> float
val randomPoints : (float * float) list =
[(9.765916457, 2.272289941); (0.8211438594, 1.625466995);
...
(7.783786034, 7.572208311); (6.497914692, 3.66987128); ...]
val it : ChartTypes.PointChart
这可能是由于该库不再受支持,我应该使用像Thomas Petricek这样的新库。
所以,我确实设法安装FSharp.Charting而不是
let rnd = System.Random()
let rand() = rnd.NextDouble()
let randomPoints = [for i in 0 .. 1000 -> 10.0 * rand(), 10.0 * rand()]
randomPoints |> Chart.Point;;
它确实有效
答案 0 :(得分:3)
有一个名为F# Charting的FSharpChart.fsx
库的更新版本,所以首先,我建议使用这个更新的库(API非常相似,但F#Charting有一个改进的数量)。
F#Charting的文档也有detailed page on referencing the library。
通常,当您使用NuGet引用库时,您需要指定相对引用:
// On Mac OSX use packages/FSharp.Charting.Gtk.0.90.13/FSharp.Charting.Gtk.fsx
#load "packages/FSharp.Charting.0.90.13/FSharp.Charting.fsx"
其中0.90.13
是您从NuGet获得的库的版本(您可能需要检查文件夹名称 - #load
中的路径引用是相对于脚本所在的位置)。
答案 1 :(得分:2)
是的,F#Interactive独立于当前项目。
使用:
#load @"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Expert in F\packages\FSharpChart.fsx";;
如果您需要引用特定文件夹see the reference的程序集,也可以使用#I
指令。