नहीं, यह परियोजना से किसी भी सेटिंग को नहीं मिलता है, तो आप पथ हार्डकोड करने की है। (यह एक परिदृश्य है जिसे हम भावी रिलीज के लिए सुधारने पर विचार करेंगे।) 'डीबग' बनाम 'रिलीज' पथों के बारे में भी सावधान रहें।
#r "EnvDTE"
#r "EnvDTE80"
#r "VSLangProj"
let appObj = System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE") :?> EnvDTE80.DTE2
let solnDir = System.IO.Path.GetDirectoryName(appObj.Solution.FileName)
let cfg = appObj.Solution.SolutionBuild.ActiveConfiguration.Name
let libraryDLLPath = System.IO.Path.Combine
[| solnDir; "Library1"; "bin"; cfg |]
//#r libraryDLL // illegal, since #r takes a string literal, but...
let props = appObj.Properties("F# Tools", "F# Interactive")
let cla = props.Item("FsiCommandLineArgs")
cla.Value <- sprintf "--optimize -I:\"%s\"" libraryDLLPath
appObj.ExecuteCommand("View.F#Interactive", "")
appObj.ExecuteCommand("OtherContextMenus.FSIConsoleContext.ResetSession", "")
#r "Library1.dll"
निष्पादित कि दो टुकड़े, पहले सब कुछ है, लेकिन अंतिम पंक्ति, और अंत में अंतिम पंक्ति के रूप:
संपादित
ठीक है, वाह, मैं बाहर कुछ उपयोगी लगा। यह मूल रूप से वीएस के अंदर आपकी एफएसआई सेटिंग्स को बदलता है और सत्र को रीसेट करता है, इसलिए बाद में आप बिना पथ के #r "MyLibrary.dll"
कर सकते हैं।
यह एक विशाल हैक है, लेकिन कुछ लोगों को यह उपयोगी मिल सकता है जैसे कि यह लगता है, इसलिए मैं इसे साझा कर रहा हूँ।
क्या कोई स्क्रिप्ट उस स्थान से उठा सकती है जहां से यह चल रहा है? वह भी अच्छा होगा। – BuddyJoe
ध्यान दें कि यदि आपके सिस्टम पर चल रहे वीएस के एक से अधिक उदाहरण हैं तो यह मेथॉफ़ आपको परेशानी में डाल सकता है। –
बहुत अच्छा। धन्यवाद। अपवॉट – BuddyJoe