0

从这里开始 -嵌入 F# 交互式- 我一直在尝试在我的应用程序中嵌入 FSI。

但是,我从 StandardOutput 得到了一些奇怪的东西。

例如,在标准 FSI 中,如果我发送这个:

let a = 3;;

我得到了这个:

[empty line here]
val a : int = 3
[empty line here]
> |

(用 Pipe 表示输入位置)

但是如果我发送let a = 3;;到 StandardInput,我会在 StandardOutput 上得到这个:

> 
val a : int = 3
|

有没有其他人试过这个?我做错了什么,如果没有,有什么办法可以解决这个问题?到目前为止我尝试过的所有事情都没有奏效,在我尝试我能想到的“更糟糕”的事情之前(在发送内容后设置一个计时器,在超时时添加 > 我自己),我想知道是否有更好的方法!

4

1 回答 1

3

嵌入 F# Interactive 时,Visual Studio 使用该--fsi-server:<some value>参数。据我所知,这做了两件事:

  • 更改输出的打印方式(而不是打印>,它打印SERVER-PROMPT>在单独的行上,因此应该更容易将其从输出中删除并在预期输入时检测状态)

  • 它还启动了一些 .NET Remoting 通道,您可以使用该通道来停止 F# Interactive 中命令的执行(例如,如果它运行到无限循环中),它还可以提供一些完成信息。

MonoDevelop F# 插件中的 F# Interactive pad 使用该标志(参见 GitHub 上的源代码)。我认为它基本上是正确的,但我相信它有时会\n在输出中打印额外的内容。

于 2011-04-04T11:19:34.967 回答