Hayır, projeden herhangi bir ayar almıyor, yolu kodlamanız gerekiyor. (Bu, gelecekteki bir sürüm için geliştirmeye bakacağımız bir senaryo.) 'Hata Ayıklama' ya da 'Sürüm' yollarına da dikkat edin.
#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"
iki parçacıkları, son satırı ancak ilk şeyi ve nihayet son satır olarak bu yürütün:
DÜZENLEME
Tamam, vay, işe yarar bir şey anladım. Temel olarak, FSI ayarlarınızı VS içinde değiştirir ve oturumu sıfırlar, böylece bir yol olmadan sadece #r "MyLibrary.dll"
'u yapabilirsiniz.
Bu devasa bir hack, ama bazı insanlar yararlı bulabilir gibi görünüyor, bu yüzden paylaşıyorum.
Bir komut dosyası, çalıştığı yerden alabilir mi? Bu da güzel olurdu. – BuddyJoe
Sisteminizde birden fazla VS örneğinin çalışması durumunda bu yöntemin sizi zor duruma sokabileceğini unutmayın. –
çok havalı. Teşekkürler. – BuddyJoe