【发布时间】:2016-01-18 15:40:26
【问题描述】:
我正在处理来自 http://fsharp.github.io/FSharp.Compiler.Service/interactive.html 的嵌入 F# Interactive 示例,但遇到以下行引发异常的问题:
let fsiSession = FsiEvaluationSession.Create(fsiConfig, allArgs, inStream, outStream, errStream)
抛出的异常是:
“在 FSharp.Compiler.Service.dll 中发生了“System.Exception”类型的未处理异常 附加信息:创建评估会话时出错:StopProcessing null"
我的项目从 VS2015 Enterprise Update 1 运行,设置为简单的 F# 控制台应用程序,目标 F# 运行时为 F# 4.0,目标框架为 4.6。从nuget下载的FSharp.Compiler.Service版本是2.0.0.2。
我正在运行的 Program.Fs 文件代码在这里(示例的直接端口):
open System
open System.IO
open System.Text
open Microsoft.FSharp.Compiler.SourceCodeServices
open Microsoft.FSharp.Compiler.Interactive.Shell
[<EntryPoint>]
let main argv =
let sbOut = new StringBuilder()
let sbErr = new StringBuilder()
let inStream = new StringReader("")
let outStream = new StringWriter(sbOut)
let errStream = new StringWriter(sbErr)
// Build command line arguments & start FSI session
let argv = [| "C:\\fsi.exe" |]
let allArgs = Array.append argv [|"--noninteractive"|]
let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration()
let fsiSession = FsiEvaluationSession.Create(fsiConfig, allArgs, inStream, outStream, errStream)
/// Evaluate expression & return the result
let evalExpression text =
match fsiSession.EvalExpression(text) with
| Some value -> printfn "%A" value.ReflectionValue
| None -> printfn "Got no result!"
evalExpression "42+1" // prints '43'
Console.ReadLine() |> ignore
0 // return integer
任何想法都将不胜感激。
【问题讨论】:
标签: f# f#-interactive