假设我们有这样一个fsi脚本:
#r "System.Core.dll"
let script = "Console.WriteLine(\"Hello, World!\")"
// fsi script ???我们可以使用#load在文件上调用fsi,但是是否可以在内存中的字符串上调用fsi而不首先将其写入文件?
用例是一个API兼容性测试器:给定一个dll,我想创建一个调用其所有公共API的脚本,并根据同一个dll的不同版本编译该脚本。
我总是可以将生成的脚本写到磁盘上,但是如果我可以直接运行它,它就会干净得多。
发布于 2013-11-15 16:09:46
您在问题中概述的任务可以使用Microsoft.FSharp.Compiler.Interactive命名空间中提供的工具来执行,特别是在FsiEvaluationSession of Microsoft.FSharp.Compiler.Interactive.Shell类型的帮助下。
这个要旨是由赖安·莱利编写的,它使用瘦包装类型FSharpEngine over FsiEvaluationSession演示了您的场景,使对fsi的编程使用非常方便,如:
....
let engine = new FSharpEngine()
engine.Execute("<some F# code>") |> processOutput
....
engine.Dispose()https://stackoverflow.com/questions/19999876
复制相似问题