2015-06-30 10 views
5

मैं एक एफ # स्क्रिप्ट फ़ाइल लिखने की कोशिश कर रहा हूं। तो मैं एक नई fsx फ़ाइल जेनरेट करने के लिए विजुअल स्टूडियो "फ़ाइल-> नई-> फ़ाइलें-> एफ # स्क्रिप्ट फ़ाइल" का उपयोग करता हूं। अब मैं पैकेज प्रबंधक कंसोल खोलने के द्वारा FSharpData के संदर्भ में जोड़ सकते हैं औरसमाधान के बिना एफ # स्क्रिप्ट के लिए nuget इंस्टॉल पैकेज का उपयोग कैसे करें?

Install-Package FSharp.Data 

दर्ज हालांकि मैं निम्नलिखित त्रुटि मिली करना चाहते हैं। क्या समाधान हमेशा 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

अच्छी तरह से कहीं भी। डीएल प्राप्त करने का आसान तरीका है (एक बार का समाधान करें और इसे उदाहरण के लिए nuget के साथ पकड़ें) और बस इसे अपनी .fsx फ़ाइल के ठीक आगे रखें - फिर आप बस आगे बढ़ सकते हैं और ' # r' इसे और इसका उपयोग करें - इसके अलावा आप अपनी स्क्रिप्ट से nuget.exe को अपने आप को पकड़ने के लिए कॉल कर सकते हैं लेकिन यह अधिक से अधिक IMO होगा (और आपको अभी भी अपने पथ में या अपनी फ़ाइल के बगल में nuget.exe होना चाहिए) – Carsten

उत्तर

3

आप विजुअल स्टूडियो पैकेज प्रबंधक का उपयोग करने के बजाय सीधे nuget.exe का उपयोग कर सकते हैं। जिसका अर्थ यह है कि आप किसी भी संपादक का उपयोग करने के लिए स्वतंत्र नहीं हैं बल्कि विजुअल स्टूडियो।

एक उदाहरण के रूप अपने .fsx रूप में एक ही फ़ोल्डर में किसी अन्य परियोजना से NuGet.exe कॉपी और फिर से चलाने के "Nuget.exe स्थापित पैकेज-नाम"

उदा

NuGet.exe install FSharp.Data 

Nuget नवीनतम संस्करण के साथ एक FSharp.Data फ़ोल्डर बना देगा। फिर बस अतिरिक्त असेंबली और सभी निर्भरताओं में #r जोड़ें।

6

वहाँ एक मजेदार आप कर सकते हैं कि 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 
""";; 

यह मेरे स्वाद के लिए थोड़ा लंबा है, लेकिन यह आपको स्क्रिप्ट फ़ाइल और एफ # इंटरएक्टिव छोड़ दिए बिना सब कुछ करने देता है।

+0

दूसरों के लिए नोट करें। उदाहरण 'packet.exe' लोडर कोड का एक नया संस्करण है जो एक संस्करण को हार्ड कोड नहीं करता है। देखें: [एफ # इंटरएक्टिव से पैकेट का उपयोग] (https://fsprojects.github.io/Paket/reference-from-repl.html)। यह 'यूआरएल = "http://fsprojects.github.io/Paket/stable" ',' स्थिर = wc.DownloadString (url) 'और' wc.DownloadFile (स्थिर, tmp)' का उपयोग करता है। NuGet के नए संस्करणों के साथ [NuGet Feed Locations] (https://www.nuget.org/) के लिए इंस्टॉल किया गया 'https: // api.nuget.org/v3/index.json' –

0

लिनक्स उपयोगकर्ताओं के लिए वहाँ से बाहर, अगर अपने distro डेबियन-आधारित है (उबंटू 16.04 के साथ परीक्षण), आप अपने एफ # स्क्रिप्ट के अंदर, कर सकता है:

  1. nuget पैकेज को स्थापित करता है, तो यह पहले से ही स्थापित नहीं कर रहा है (sudo apt install nuget का उपयोग करें)।
  2. nuget install FSharp.Data -Version 2.3.2 करें।
  3. #r लाइन (उदा। #r "FSharp.Data.2.3.2/lib/net40/FSharp.Data.dll) के माध्यम से डीएलएल लोड करें।

इस तरह आपको कुछ वेब सर्वर से .exe फ़ाइलों को डाउनलोड करने की आवश्यकता नहीं है, जो पूरी तरह से असुरक्षित महसूस करते हैं।

पीएस: सावधान रहें, फिर भी आप (माइक्रोसॉफ्ट के) Nuget सर्वर से प्राप्त लाइब्रेरी (बाइनरी) पर भरोसा करेंगे।

+0

शायद आप अधिक विस्तार से जा सकते हैं चरण 3 – Sam

+0

@ सैम अद्यतन उत्तर के बारे में – knocte

संबंधित मुद्दे