使用Codedom在运行时编译F#源代码?

时间:2014-04-14 07:24:41

标签: f# .net-assembly

我需要在运行时将一些f#源文件编译成一个程序集。

目前我正在使用Fsharp.Compiler.CodeDom并且它完成了我需要它做的事情,但似乎这个图书馆还没有得到维护。 我想知道,我使用的是正确的吗?

注意:我看到了与此问题相似的问题的一些答案,但这些问题已有几年了。

1 个答案:

答案 0 :(得分:1)

这实际上应该归John Palmer ......来自他的链接的spinet基本上只是工作

[<EntryPoint>]
let main argv = 
    printfn "%A" argv

    let scs = SimpleSourceCodeServices();
    let fn = Path.GetTempFileName();
    let fn2 = Path.ChangeExtension(fn, ".fs");
    let fn3 = Path.ChangeExtension(fn, ".dll");

    File.WriteAllText(fn2, """ 
module File1
  let seven =
           3 + 4
        """);

    let errors1, exitCode1 = scs.Compile([| "fsc.exe"; "-o"; fn3; "-a"; fn2 |])
    let ex = File.Exists(fn3)
    printfn "File %s exists: %b" fn3 ex

我必须承认,看到非fsc.exe选项会很酷:D