아니요, 프로젝트에서 설정을 가져 오지 않았으므로 경로를 하드 코딩해야합니다. (이것은 향후 릴리스에서 개선 될 시나리오입니다.) 'Debug'경로 대 'Release'경로에도주의하십시오.
#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"
두 조각, 마지막 줄하지만 먼저 모든 것을, 그리고 마지막으로 마지막 줄이 실행 :
편집
좋아, 와우, 나는 유용한 무언가를 알아 냈어. 기본적으로 VS 내부의 FSI 설정을 변경하고 세션을 재설정하므로 나중에 경로없이 #r "MyLibrary.dll"
을 사용할 수 있습니다.
거대한 해킹이지만 일부 사람들이 유용하다고 생각하는 것처럼 보이므로 공유하고 있습니다.
스크립트는 실행중인 위치에서 픽업 할 수 있습니까? 그거 좋을거야. – BuddyJoe
시스템에서 실행중인 VS의 인스턴스가 두 개 이상인 경우이 메쏘 프가 문제가 될 수 있습니다. –
매우 근사합니다. 감사. upvotes – BuddyJoe