如何在运行后保持fsi.exe打开

时间:2012-07-06 13:21:04

标签: f# f#-interactive f#-scripting

我有一堆F#脚本(fsx),我用它来满足我的基本部署需求。我只需右键单击它们并说出#34;使用F#interactive"

运行

但是,有时脚本会失败,我希望保持交互式控制台的运行。到目前为止,我还没有找到实现这一目标的好方法。

我尝试手动启动fsi.exe但是如何从那里启动脚本?

3 个答案:

答案 0 :(得分:9)

如果你足够hack,你可能只想添加另一个类似于Run with F# Interactive的资源管理器上下文菜单项,但在.fsx脚本终止后保持控制台窗口打开。以下是如何为Windows7 / VS2012实现此目的的工作大纲:

  • 管理员打开regedit并找到密钥HKEY_CLASSES_ROOT\VisualStudio.fsx.11.0\shell
  • 添加一个新的子项,其中包含一些唯一的名称,例如openRunCmd,为此键添加(Default)值,无论您希望在上下文菜单中看到什么,也许Run with Fsi in shell
  • 最后,添加子项HKEY_CLASSES_ROOT\VisualStudio.fsx.11.0\shell\openRunCmd\command并将此子项的(Default)值设置为以下行:

    c:\windows\system32\cmd.exe /Q /K %%USERPROFILE%%\fsx.bat "%1"

现在,关闭regedit,转到您的主目录,然后使用以下行创建批处理文件fsx.bat

"C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe" --quiet --exec "%1"

在这些mod之后,您可以使用鼠标右键单击任何.fsx脚本,选择Run with Fsi in shell并在脚本终止后保留shell窗口,直到您关闭它。只需很少的小调整,相同的方法就可以用于VS2010。

如果您的系统设置与上述设置不同,请务必小心调整细节。祝你好运!

更新:对于那些想在家中或工作中尝试此操作的人,我已经发布了详细的演练here

答案 1 :(得分:3)

#load "myScipt.fsx";;

我认为应该工作。但是我自己更喜欢只有一个单独的控制台窗口(cmd.exe),我可以从中运行fsi myScipt.fsx并查看输出。

答案 2 :(得分:0)

我用

创建了一个Windows快捷方式

目标:

cmd /k "C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\Fsi.exe" deploy.fsx

开始于:

C:\FolderContaningFsxScript

如果脚本失败,这会使窗口保持打开状态,这样我就可以看到任何编译错误。如果脚本成功运行,它也会保持窗口打开,这可能是也可能不合适。

我发现只需单击快捷方式而不是右键单击>使用F#Interactive运行。我认为使用上述命令的批处理文件也可以正常工作。