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

28

我想在Visual Studio 2010中使用F#交互式控制台与当前打开的解决方案中的项目一起使用。是否有一种快速简便的方法,可以向F#交互式控制台添加引用,以便引用当前打开解决方案中的项目?

6个回答

30

我在我的 .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中,并加载所有所需的内容。


1
如果这个答案能够展示如何使用相对路径或者能够处理相对路径的话,那么就非常好了。 - Maslow
我认为现在默认是 Ctrl+Shift+Enter,需要先选择文件的内容。 - Abel

20

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

#r @"bin\Debug\YourProject.dll"

那么您至少可以通过在Visual Studio中按Alt+Enter来引用已编译的DLL文件。据我所知,您无法引用项目 - 只能引用程序集。

目前,F#交互与Visual Studio中的项目系统确实没有什么关联。我想更紧密的集成可能会非常有用(但可能难以提供)。


4
嗯,是啊,我以为在 IDE 中使用 F# 交互窗口的其中一个优点就是可以获得 IDE 的一些上下文信息。希望有人能够更详细地解释这个问题? - Russell
3
目前,F# Interactive 在 Visual Studio 的项目系统中与项目的连接非常松散。 - Guy Coder
我在F#项目的解决方案资源管理器中看到了“将项目输出发送到F#交互式”菜单项,但是在C#项目上却没有 =( - Maslow

20

如果这是你经常引用的项目,你可以在“工具”->“选项”->“F# 工具”->“F# 交互式选项”下的 FSI 命令行中添加一个“always”引用。 像这样添加一个 -r 开关:

如果这是您经常引用的项目,则可以在“工具”->“选项”->“F# 工具”->“F# 交互式选项”下的FSI命令行中添加一个“always”引用。 例如:

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

16

现在在 Visual Studio 2013 中,您可以右键单击所引用的 DLL 并单击“发送到 F# 交互式”将其添加到 F# 交互窗口中。


1
到目前为止,这是我找到的最好的答案。非常感谢你的提示! - Michael

1
Visual Studio F# Interactive选项菜单应允许规定启动脚本,以便调用可以通过“--use:”指令将其传递给FSI。这样的脚本可以传递解决方案元数据,使环境更加集成,例如加载最新的项目输出。

1
我认为应该很容易引用当前项目,获取它包含的引用列表,然后可选地为正在创建的交互式会话生成一个 #r(可能还有 #i)语句列表,引用项目本身的 dll。
例如:"fsi /i:pathOfLib1 /r:lib1 /i:pathOfLib2 /r:lib2 ...."
PS:根据 MSDN 文章,库名称似乎不能包括其路径前缀,因此将其分成 /i 和 /i:http://msdn.microsoft.com/en-us/library/dd233172%28v=vs.100%29.aspx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接