2011-04-13 56 views
6

我相信这一定很容易,但我似乎无法使其工作。比方说,我有一个.fsx脚本文件,并希望使其以编程方式执行。我猜测有人必须在某个时候对此进行博客,但我似乎无法找到执行我简单场景的示例。基本上,我想以编程方式重复发生什么,当你右键点击一个.fsx文件,并选择“用F#交互式运行...”以编程方式运行.fsx脚本文件的F#

+0

有一个讨论,在这里嵌入FSI解释:http://stackoverflow.com/questions/1563024/embedding-f-interactive – sukru 2011-04-13 00:27:09

+0

也就是说这是一篇有趣的文章,但对于我尝试实施的场景来说却是严重的矫枉过正。谢谢你提到它。 – Beaker 2011-04-13 00:32:06

回答

2

如问一个评论,您可以设置UseShellExecute为false,以避免打开Windows外壳。通过这种方式,你可以有你的输出直接在F#壳:

​​
+0

谢谢,这确实解决了我发布的代码片段中令人讨厌的问题。 :) – Beaker 2011-04-13 19:58:05

1

随着命令行参数随机混乱,我终于得到它的工作。我回答自己的问题时感到有点跛脚,但希望它仍能帮助别人。事实证明,我的困惑是正确使用命令行参数。如果某人有比我所说的更优雅或更有用的东西,我会将答案给予你。

open System.Diagnostics 

let launchExecutable() = 
    let proc = new Process() 
    proc.StartInfo.FileName <- @"C:\Program Files (x86)\Microsoft F#\v4.0\fsi.exe" 
    proc.StartInfo.Arguments <- @"--exec --nologo pathToFSXFile\Test.fsx" 
    proc.Start() 


launchExecutable();; 
+0

我刚刚意识到我在camel-case中写了launchExecutable。很明显,函数式编程风格正在把我变成部队的黑暗面。 ;) – Beaker 2011-04-13 14:49:14