我正在尝试编写F#脚本文件。所以我使用Visual studio" File-> New-> Files-> F#Script File"生成一个新的fsx文件。现在,我想通过打开包管理器控制台并输入
来添加对FSharpData的引用private int index; // remember to reset this to 0 each time you change the folder
private List<string> images;
private void Timer1_Tick(object sender, EventArgs e)
{
index = (index + 1) % images.Length;
pictureBox1.Image = Image.FromFile(images[index]);
}
但是我收到了以下错误。是否总是需要为F#脚本文件创建解决方案?
Install-Package : The current environment doesn't have a solution open. At line:1 char:1 + Install-Package FSharp.Data + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationException + FullyQualifiedErrorId : NuGetNoActiveSolution,NuGet.PowerShell.Commands.InstallPackageCommand
答案 0 :(得分:7)
有一个有趣的黑客,你可以在suave.io网站上记录,下载Paket然后用它来下载包 - 所有这些都在一个脚本文件的几行中:
// Step 0. Boilerplate to get the paket.exe tool
open System
open System.IO
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
if not (File.Exists "paket.exe") then
let url = "https://github.com/fsprojects/Paket/releases/download/0.31.5/paket.exe"
use wc = new Net.WebClient()
let tmp = Path.GetTempFileName()
wc.DownloadFile(url, tmp)
File.Move(tmp,Path.GetFileName url)
// Step 1. Resolve and install the packages
#r "paket.exe"
Paket.Dependencies.Install """
source https://nuget.org/api/v2
nuget Suave
nuget FSharp.Data
nuget FSharp.Charting
""";;
根据我的口味,它有点长,但它可以让你在不留下脚本文件和F#Interactive的情况下完成所有工作。
答案 1 :(得分:4)
您可以直接使用nuget.exe而不是使用Visual Studio包管理器。这意味着您可以自由使用任何编辑器而不仅仅是Visual Studio。
作为示例,将NuGet.exe从任何其他项目复制到与.fsx相同的文件夹中,然后运行“Nuget.exe install package-name”
e.g。
NuGet.exe install FSharp.Data
Nuget将使用最新版本创建FSharp.Data文件夹。然后只需在添加的程序集和所有依赖项中添加#r。
答案 2 :(得分:0)
对于Linux用户,如果您的发行版是基于Debian的(使用Ubuntu 16.04测试),您可以在F#脚本中执行:
nuget
软件包(如果尚未安装)(使用sudo apt install nuget
)。nuget install FSharp.Data -Version 2.3.2
。#r
行加载DLL(例如#r "FSharp.Data.2.3.2/lib/net40/FSharp.Data.dll
)。这样您就不需要从某个Web服务器下载.exe文件,感觉完全不安全。
PS:请注意,你仍然会信任从(微软)Nuget服务器收到的库(二进制)。