यहां तक कि अगर तुम सिर्फ दृश्य स्टूडियो के लिए fsx
स्क्रिप्ट जोड़ने, तो आप अभी भी एक साथ एक सामान्य परियोजना में setup.fsx
संकलन कर सकते हैं साथ अन्य (संभवतः fs
) फ़ाइलें, इसलिए आपको स्क्रिप्ट को विजुअल स्टूडियो में एक सामान्य स्क्रिप्ट फ़ाइल के रूप में रखने में सक्षम होना चाहिए और साथ ही, इसे किसी प्रोजेक्ट या कमांड लाइन टूल से संदर्भित करना चाहिए जो आपके परीक्षण बनाता है।
मैं निम्नलिखित test.fsx
फ़ाइल के साथ कर रही कोशिश की:
module Demo
#r "System.Xml.Linq.dll"
open System.Xml.Linq
let test() =
let d = XDocument(XElement(XName.Get("foo")))
d.ToString()
आप निश्चित रूप से शुरुआत में कुछ module Name
घोषणा की जरूरत है (ताकि आप अन्य फ़ाइलों से कार्यों का उपयोग कर सकते हैं), लेकिन अन्यथा यह किसी भी fsx
फ़ाइल हो सकता है । अन्य फ़ाइल है कि मैं का इस्तेमाल किया test.fs
था:
module Main
open Demo
test() |> printfn "%A"
यह सिर्फ परीक्षण के लिए है, लेकिन यहाँ आप अपनी इकाई परीक्षण लिख सकते हैं। आप निम्न आदेश के साथ फ़ाइलें संकलन हैं, तो आप मानक विधानसभा कि आप XUnit को दे सकते हैं मिलता है (ध्यान दें, संकलक test.fsx
से #r
टैग चुन सकते हैं, हम संदर्भ स्पष्ट रूप से लिखने के लिए नहीं है):
fsc.exe --target:library test.fsx test.fs
मुझे लगता है कि यदि आप एक लाइब्रेरी प्रोजेक्ट जोड़ते हैं और फिर fsproj
फ़ाइल में इस तरह से कुछ का उपयोग करके फ़ाइल को लिंक (जो आपकी समाधान संरचना में कहीं और फ़ाइल को इंगित कर सकते हैं) को मैन्युअल रूप से लिंक जोड़ सकते हैं:
<Compile Include="..\Eslewhere\In\Your\Project\Tree\File.fsx">
<Link>File.fsx</Link>
</Compile>
ध्यान दें कि जब आपजोड़ते हैं "आइटम जोड़ें" का उपयोग करकेफ़ाइल, इसे "शामिल करें" के रूप में चिह्नित किया गया है लेकिन "संकलन" के रूप में नहीं, इसलिए इसे प्रोजेक्ट के हिस्से के रूप में संकलित नहीं किया जाता है। उपर्युक्त में इसे परियोजना में शामिल करना चाहिए और इसे कंपाइलर को संकलित असेंबली में शामिल करने के लिए भी बताना चाहिए।
चेतावनी: कि कहा, मैं यह सिर्फ संकलित dll
मानक इकाई परीक्षण का उपयोग करके फ़ाइलें परीक्षण करने के लिए बेहतर हो सकता है लगता है। यदि आप fsx
फ़ाइलों का परीक्षण करना चाहते हैं, तो मैं अंत में परीक्षणों के रूप में कुछ पंक्तियां जोड़ूंगा और उन्हें हाथ से चलाऊंगा (चयन करें, Alt
+ Enter
)। कारण यह है कि fsx
फ़ाइलों को अक्सर बदला जाना चाहिए और इसलिए बहुत ठोस परीक्षण होने से आपकी लचीलापन सीमित हो सकती है। दूसरी ओर, एक बार कोड अधिक ठोस हो जाता है, इसे dll
फ़ाइल में स्थानांतरित करने के लिए समझ में आता है।
यदि आप fsx में शीर्ष पर मॉड्यूल लिखते हैं, तो आप इसे fsi में निष्पादित नहीं कर सकते हैं। #if COMPILED मॉड्यूल डेमो #endif ठीक लगता है – nicolas
क्या आप सुनिश्चित हैं कि आपके पास किसी fsx फ़ाइल में परिभाषित होने पर डेमो नेमस्पेस तक पहुंच है? मुझे एक त्रुटि मिलती है। fsx फ़ाइल प्रोजेक्ट सूची में ऊपर है .. fs को नाम बदलने पर त्रुटि गायब हो जाती है, fsx – nicolas
पर वापस स्विचिंग दिखाई देती है @nicolas I केवल कमांड लाइन से हाथ से कंपाइलर चलाने की कोशिश की। मुझे लगता है कि यह केवल तभी काम करेगा यदि 'fsx' फ़ाइल को संकलन के रूप में चिह्नित किया गया है - कमांड लाइन कमांड क्या है जो विजुअल स्टूडियो "आउटपुट" विंडो में प्रिंट करता है? क्या आप 'fsx' फ़ाइल थर्म देख सकते हैं? –