F# 帮助嵌入FSI

F# 帮助嵌入FSI,f#,embed,redirectstandardoutput,fsi,F#,Embed,Redirectstandardoutput,Fsi,从这里开始--我一直在尝试在我的应用程序中嵌入FSI 然而,我从StandardOutput中得到了一些奇怪的东西 例如,在标准FSI中,如果我发送: let a = 3;; 我把这个拿回来: [empty line here] val a : int = 3 [empty line here] > | (管道表示输入位置) 但是如果我发送让a=3到StandardInput,我在StandardOutput上得到了以下信息: > val a : int = 3 | 还有人试

从这里开始--我一直在尝试在我的应用程序中嵌入FSI

然而,我从StandardOutput中得到了一些奇怪的东西

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

let a = 3;;
我把这个拿回来:

[empty line here]
val a : int = 3
[empty line here]
> |
(管道表示输入位置)

但是如果我发送
让a=3到StandardInput,我在StandardOutput上得到了以下信息:

> 
val a : int = 3
|
还有人试过这个吗?我有没有做错什么,如果没有,有没有办法解决这个问题?到目前为止,我尝试过的所有事情都不起作用,在我尝试我能想到的“更糟糕”的事情之前(在发送内容后设置计时器,在超时时添加>我自己),我想知道是否有更好的方法

嵌入F#Interactive时,Visual Studio使用
--fsi服务器:
参数。 据我所知,这有两件事:

  • 更改输出的打印方式(它不是打印
    ,而是在单独的行上打印
    服务器提示>
    ,因此从输出中删除它应该更容易,并在需要输入时检测状态)

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

MonoDevelop F#插件中的F#交互式键盘使用标志()。我认为它基本上是正确的,但我相信它有时会在输出中打印额外的
\n

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

  • 更改输出的打印方式(它不是打印
    ,而是在单独的行上打印
    服务器提示>
    ,因此从输出中删除它应该更容易,并在需要输入时检测状态)

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


MonoDevelop F#插件中的F#交互式键盘使用标志()。我认为它基本上是正确的,但我相信它有时会在输出中打印额外的
\n

我忍不住尝试
printfn“服务器提示>”在VS:)我忍不住尝试
printfn“SERVER-PROMPT>”在VS:)