Там нет функции, которая позволит вам сделать это непосредственно. Однако, если вы хотите скомпилировать исходный файл 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 и запустить некоторые конкретные функции или класс из сборки (вы можете, например, искать функцию с каким-то специальным именем или отмечать некоторым атрибутом).
(В качестве побочного ноты, используя цитаты или писать свой собственный интерпретатор, как указано в related SO question может быть вариант, если ваш исходный код является относительно простым, но, вероятно, если вы не хотите, чтобы поддерживать полную мощность F #)
Возможный дубликат: http://stackoverflow.com/questions/372043/how-can-evaluate-an-expression-stored-as-a-string-in-f – Brian
Вы хотите загрузить код F # из этого файл? – phimuemue
Я думаю, что этот пост задает немного другой вопрос (хотя и с технической точки зрения). Описанный Брайаном вопрос о простых выражениях, в то время как этот вопрос требует компиляции/оценки файла. Технически это может быть одно и то же, но, вероятно, это совсем другой вариант использования. –