Скомпилировать исходный код F# во время выполнения с Codedom?

Мне нужно скомпилировать некоторые исходные файлы F# во время выполнения в сборку.

В настоящее время я использую Fsharp.Compiler.CodeDom, и он делает то, что мне нужно, но кажется, что эта библиотека не поддерживается. Я хотел бы знать, я использую правильный?

Примечание: я видел несколько ответов на подобные вопросы, но на эти вопросы было несколько лет.

1 ответ

Решение

Это на самом деле должно пойти к Джону Палмеру.... Спинет из его ссылки в основном просто работает

[<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

Другие вопросы по тегам