2011-04-13 18 views
6

मुझे यकीन है कि यह वास्तव में कुछ आसान होना चाहिए, लेकिन मैं इसे काम नहीं कर सकता। मान लें कि मेरे पास .fsx स्क्रिप्ट फ़ाइल है और इसे प्रोग्रामेटिक रूप से निष्पादित करने का कारण बनना है। मुझे लगता है कि किसी ने किसी बिंदु पर इस बारे में ब्लॉग किया होगा, लेकिन मुझे ऐसा उदाहरण नहीं मिल रहा है जो मेरा सरल परिदृश्य करता है। असल में, मैं प्रोग्रामैटिक रूप से डुप्लिकेट करना चाहता हूं जब आप .fsx फ़ाइल पर राइट क्लिक करें और "एफ # इंटरएक्टिव के साथ चलाएं ..."एफ # प्रोग्रामेटिक रूप से चल रहा है .fsx स्क्रिप्ट फ़ाइल

+0

वहाँ एक चर्चा यहाँ FSI दुभाषिया एम्बेड करने पर है: http://stackoverflow.com/questions/1563024/embedding-f-interactive – sukru

+0

यही कारण है एक दिलचस्प लेख, लेकिन परिदृश्य के लिए गंभीर ओवरकिल मैं लागू करने की कोशिश कर रहा हूं। यद्यपि इसका उल्लेख करने के लिए धन्यवाद। – Beaker

उत्तर

2

के रूप में एक टिप्पणी में पूछा, आप UseShellExecute गलत पर विंडोज खोल खोलने से बचने के लिए सेट कर सकते हैं। इस तरह, आप एफ # खोल में सीधे अपने उत्पादन हो सकता है:

open System.Diagnostics 

let execScript script = 
    let psi = new ProcessStartInfo(@"c:\Program Files\Microsoft F#\v4.0\Fsi.exe") 
    psi.Arguments <- script 
    psi.UseShellExecute <- false 
    let p = Process.Start(psi) 
    p.WaitForExit() 
    p.ExitCode 
+0

धन्यवाद, जो मैंने पोस्ट किए गए कोड स्निपेट में एक परेशान समस्या को ठीक करता है। :) – Beaker

1

कमांड लाइन तर्क के साथ यादृच्छिक रूप से गड़बड़ करने के बाद मुझे अंत में काम करने के लिए मिला। मुझे लगता है कि थोड़ा लंगड़ा मेरे अपने सवाल का जवाब दे रहा है, लेकिन उम्मीद है कि यह अभी भी किसी और की मदद करेगा। यह पता चला कि मेरा भ्रम कमांड लाइन तर्कों का उचित उपयोग था। अगर किसी के पास जो कुछ मैंने रखा है उससे कहीं अधिक सुरुचिपूर्ण या आम तौर पर उपयोगी है तो मैं आपको जवाब दूंगा।

open System.Diagnostics 

let launchExecutable() = 
    let proc = new Process() 
    proc.StartInfo.FileName <- @"C:\Program Files (x86)\Microsoft F#\v4.0\fsi.exe" 
    proc.StartInfo.Arguments <- @"--exec --nologo pathToFSXFile\Test.fsx" 
    proc.Start() 


launchExecutable();; 
+0

मुझे अभी एहसास हुआ कि मैंने ऊंट-केस में लॉन्च किया है। जाहिर है, कार्यात्मक प्रोग्रामिंग शैली मुझे बल के अंधेरे तरफ मोड़ रही है। ;) – Beaker

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