帮助嵌入FSI

时间:2011-04-04 08:55:57

标签: f# embed redirectstandardoutput fsi

从这里开始 - Embedding F# interactive - 我一直在尝试将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
|

还有其他人试过吗?有什么我做错了,如果没有,有没有办法解决这个问题?到目前为止我没有尝试过的任何事情,在我尝试“更糟糕”的事情之前我能想到(在发送东西之后设置一个计时器,在超时时加上>我自己),我想知道是否有是一种更好的方式!

1 个答案:

答案 0 :(得分:3)

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

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

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

    < / LI>

MonoDevelop F#插件中的F#Interactive pad使用标志(see source code on GitHub)。我认为它大部分都是正确的,但我相信它有时会在输出中打印出额外的\n