Нет функции, которая позволила бы сделать это напрямую. Однако если вы хотите программно скомпилировать исходный файл F#, вы можете вызвать компилятор F# из своего приложения. Самый простой способ сделать это — использовать поставщик F# CodeDOM, который доступен в составе F# PowerPack (в сборке FSharp.Compiler.CodeDom.dll
). Однако обратите внимание, что на компьютере пользователя должен быть установлен компилятор F#.
Код для запуска компилятора будет выглядеть примерно так:
open Microsoft.FSharp.Compiler.CodeDom
let provider = new FSharpCodeProvider()
let compiler = provider.CreateCompiler()
let parameters = new CompilerParameters
(GenerateExecutable = true, OutputAssembly = "file.exe")
let results = icc.CompileAssemblyFromFile(parameters, "filename.fs")
Как только вы скомпилируете исходный файл в сборку, вам нужно будет загрузить сборку с помощью .NET Reflection и запустить какую-то конкретную функцию или класс из сборки (например, вы можете найти функцию с каким-то специальным именем или помеченную каким-то атрибутом ).
(В качестве примечания: используйте цитаты или напишите свой собственный интерпретатор, как указано в вопрос, связанный с SO, может быть вариантом, если ваш исходный код относительно прост, но, вероятно, нет, если вы хотите поддерживать всю мощь F#)
person
Tomas Petricek
schedule
09.04.2010