एफ # कंपाइलर फ़ोल्डर का समर्थन करता है ठीक है। आप इस तथ्य का जिक्र कर रहे हैं कि विजुअल स्टूडियो, डिफ़ॉल्ट कॉन्फ़िगरेशन में, किसी को F # प्रोजेक्ट में फ़ोल्डर जोड़ने की अनुमति नहीं देता है - यह एक वास्तविक तथ्य है। लेकिन अगर आप किसी भी तरह से अपनी प्रोजेक्ट फ़ाइल में फ़ोल्डर जोड़ने के लिए प्रबंधन करते हैं (या तो फ़ाइल को मैन्युअल रूप से संपादित करके, या F# Power Tools के साथ), तो F # कंपाइलर को उनके साथ कोई समस्या नहीं होगी।
लेकिन यह आपके मामले के लिए सभी अप्रासंगिक है, क्योंकि स्क्रिप्ट्स (fsx
) संकलित मॉड्यूल (fs
) जैसी ही नहीं हैं। स्क्रिप्ट्स में एक साथ बाध्य करने के लिए कोई प्रोजेक्ट नहीं है, और इसके बजाय एक दूसरे के कोड का उपयोग करने के लिए #load
एक दूसरे को अवश्य होना चाहिए। और #load
किसी भी पथ से किया जा सकता है। Function1/run.fsx
भीतर
ProjectFolder
-> Common
-> Helpers.fsx
-> Function1
-> function.json
-> run.fsx
-> Function2
-> function.json
-> run.fsx
और फिर,, रिश्तेदार पथ का उपयोग कर फ़ाइल Helpers.fsx
लोड:
उदाहरण के लिए, अगर आप इस तरह अपने कोड बाहर रखना चाहते हो सकता है
// Function1/run.fsx
#load "../Common/Helpers.fsx"
let x = Helpers.someFunction()
रूप से स्पष्ट है ऊपर दिया गया उदाहरण, स्क्रिप्ट फ़ाइल के नाम पर एक मॉड्यूल के रूप में होस्ट स्क्रिप्ट के भीतर इस तरह से लोड की गई एक स्क्रिप्ट दिखाई देगी।
यह काम करता है, लेकिन समय के साथ यह बहुत गन्दा हो जाएगा। मैं अत्यधिक इसके बजाय precompiled कोड के साथ जाने की सलाह देते हैं। इस तरह, आप एक साझा पुस्तकालय में सामान्य कोड डाल सकते हैं और इसे दोनों कार्यों से संदर्भित कर सकते हैं।
मैं बहुत अधिक this recent video from NDC Oslo की अनुशंसा करता हूं। यह इन चीजों और अधिक के बारे में बहुत अच्छी बात करता है।
स्रोत
2017-07-12 19:57:32
मैं स्क्रिप्ट के बजाय एज़ूर फ़ंक्शंस के लिए एक fsproj (प्री-संकलित) का उपयोग करने की अनुशंसा करता हूं। विशेष रूप से यदि आप कार्यों के बीच कोड साझा करना चाहते हैं। पूर्व संकलित करने के लिए केवल फायदे हैं। आप वीएस एज़ूर फ़ंक्शंस प्रोजेक्ट का उपयोग करने में सक्षम नहीं होंगे लेकिन आपको इसकी आवश्यकता नहीं है। – TheQuickBrownFox