F#交互式:在当前打开的解决方案中引用项目

F#交互式:在当前打开的解决方案中引用项目,f#,f#-interactive,F#,F# Interactive,我想将F#交互式控制台用于VisualStudio2010中当前打开的解决方案中的项目。有没有一种快速简便的方法可以在F#交互控制台中添加引用,以引用当前打开的解决方案中的项目?我认为没有任何直接的方法可以引用解决方案中的项目。我能想到的最好方法是使用#r指令在项目的某处添加一个FSX文件: #r @"bin\Debug\YourProject.dll" 然后,您至少可以通过在VisualStudio中按Alt+Enter键来引用已编译的DLL文件。据我所知,您不能引用项目-只能引用程序集 目

我想将F#交互式控制台用于VisualStudio2010中当前打开的解决方案中的项目。有没有一种快速简便的方法可以在F#交互控制台中添加引用,以引用当前打开的解决方案中的项目?

我认为没有任何直接的方法可以引用解决方案中的项目。我能想到的最好方法是使用
#r
指令在项目的某处添加一个FSX文件:

#r @"bin\Debug\YourProject.dll"
然后,您至少可以通过在VisualStudio中按Alt+Enter键来引用已编译的DLL文件。据我所知,您不能引用项目-只能引用程序集


目前,F#Interactive与Visual Studio中的项目系统实际上是断开连接的。我认为更紧密的集成是非常有用的(但可能很难提供)。

如果这是一个您经常引用的项目,您可以在“工具”->“选项”->“工具”->“交互选项”下向FSI命令行添加“始终”引用。 添加a-r开关,如:

-r "C:\Users\yaddayadda\MyDll.dll"

在.fs文件的顶部有这样的行:

#if INTERACTIVE
#r @"C:\path\to\some.dll"
#I @"C:\Users\bford\path\to\a\project\in\this\solution\bin\Debug"
#r "Project.name"
#endif

Alt Enter
现在将我放入fsi,并加载所有必需的内容

我认为引用当前项目、获取其中包含的引用列表,然后为正在创建的交互式会话生成一个#r(可能还有#I)语句列表应该很简单,同时引用项目本身的dll

例如:“fsi/i:pathOfLib1/r:lib1/i:pathOfLib2/r:lib2…”


PS:根据MSDN文章,似乎库名称不能包含其路径前缀,因此将/i和/i分开:

现在在Visual Studio 2013中,您可以通过右键单击引用的dll并单击“发送到F#interactive”来添加对F#interactive窗口的引用.

如果Visual Studio F#Interactive Options菜单允许规定启动脚本,调用可以通过“-use:”指令传递给FSI,那就好了。这样的脚本可以被传递到解决方案元数据,允许环境更加集成,比如加载最新的项目输出。

Hmmm,是的,我认为在IDE中设置F#interactive窗口的一半意义在于获取IDE的一些上下文。希望有人能对此有更多的了解?+1目前,F#Interactive确实与Visual Studio中的项目系统断开了连接。我在解决方案资源管理器中看到一个
将项目输出发送到F#Interactive的菜单项,该菜单项位于F#projects上,而不是C#projects上=(如果这个答案显示了如何使用相对路径或如何使用相对路径,那就太棒了。我认为现在默认情况下这是
Ctrl+Shift+Enter
,需要先选择文件的内容。到目前为止,这是我找到的最佳答案。非常感谢你的提示!