2015-06-30 11 views
5

Bir F # komut dosyası yazmaya çalışıyorum. Bu yüzden yeni bir fsx dosyası oluşturmak için Visual studio "File-> New-> Files-> F # Script File" ı kullanıyorum. Şimdi Paket Yöneticisi Konsolu açarak FSharpData başvuru eklemek ve aşağıdaki hata var AncakBir çözüm olmadan F # betiği için nuget yükleme paketi nasıl kullanılır?

Install-Package FSharp.Data 

girmek istiyorum. F # script dosyası için bile her zaman çözüm oluşturulması gerekiyor mu?

 
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

iyi bir şekilde .dll bir yerden alın (bir kerelik bir çözüm yapın ve örneğin nuget ile yakalayın) ve sadece .fsx dosyanızın hemen yanına koyun - o zaman sadece devam edebilirsiniz ve '' # r' it ve kullan - bunun dışında sen kendinden al, ama overkill IMO olurdu (ve hala senin yolunda veya dosyanızın yanında nuget.exe olması gerekir) betik nuget.exe çağırabilirsiniz – Carsten

cevap

3

Visual Studio paket yöneticisini kullanmak yerine nuget.exe dosyasını doğrudan kullanabilirsiniz. Yani sadece Visual Studio'yu değil herhangi bir editörü kullanmakta özgürsünüz. Örnek olarak

örneğin "Nuget.exe paket-adı yükle" çalıştırın ardından .fsx aynı klasöre başka projeden NuGet.exe kopyalayıp

NuGet.exe install FSharp.Data 

Nuget, en son sürüme sahip bir FSharp.Data klasörü oluşturur. Ardından eklenmiş derleme ve tüm bağımlılıklara bir #r ekleyin.

6

Orada eğlenceli bir o suave.io web PAKET indirir ve daha sonra paketleri indirmek için kullanır sitedeki belgelenmiştir yapabilirsiniz kesmek - bir komut dosyası birkaç satırda ve tüm bu:

// 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 
""";; 

Tadımadığım için biraz uzun, ama bir komut dosyası ve F # Interactive'den ayrılmadan her şeyi yapmanıza izin veriyor. senin dağıtıma Debian tabanlı ise

orada Linux kullanıcıları için
+0

Diğerleri için not. Bir sürümü hard kodu olmayan 'packet.exe 'loader kodunun daha yeni bir sürümü var. Bakınız: [F # Interactive'den Paket Kullanma] (https://fsprojects.github.io/Paket/reference-from-repl.html). Bu izin 'kullandığı URL = "http://fsprojects.github.io/Paket/stable"', 'stabil = wc.DownloadString (URL) 've' wc.DownloadFile (kararlı, tmp) 'sağlar. Için [Nuget Yem Mekanlar] (https://www.nuget.org/) Nuget yeni sürümleriyle kullanımı 'https yüklü: // api.nuget.org/v3/ –

0

, (Ubuntu 16.04 ile test), siz, F # komut dosyası içinde, yapabilirdi:

  1. nuget paketini yükleyin Zaten yüklü değilse (sudo apt install nuget kullanın.
  2. nuget install FSharp.Data -Version 2.3.2 yapın.
  3. DLL dosyasını bir #r satırı aracılığıyla yükleyin (ör. #r "FSharp.Data.2.3.2/lib/net40/FSharp.Data.dll).

Bu şekilde, tamamen güvenli olmayan bazı web sunucularından .exe dosyalarını indirmeniz gerekmez.

Not: Yine de (Microsoft'un) Nuget sunucusundan alınan kitaplığa (ikili) hala güveniyor olmalısınız.

+0

index.json' Belki daha detaya gidebiliriz adım 3 hakkında – Sam

+0

@Sam güncellenmiş yanıt – knocte

İlgili konular