Nie ma funkcji, która pozwoliłaby na wykonanie tej czynności bezpośrednio. Jednakże, gdy chcesz skompilować program źródłowy F # programowo, możesz wywołać kompilator F # z aplikacji. Najprostszym sposobem na to jest użycie dostawcy F # CodeDOM, który jest dostępny jako część F # PowerPack (w zestawie FSharp.Compiler.CodeDom.dll
). Należy jednak pamiętać, że na komputerze użytkownika musi być zainstalowany kompilator F #.
Kod uruchomić kompilator będzie wyglądać mniej więcej tak:
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")
Po kompilacji pliku źródłowego w zespole, musisz załadować montaż przy użyciu .NET refleksji i uruchomić jakąś konkretną funkcję lub klasa ze złożenia (możesz na przykład szukać funkcji o specjalnej nazwie lub oznaczonej jakimś atrybutem).
(Jak na marginesie, z wykorzystaniem cytatów lub pisanie własnego tłumacza jak wspomniano w related SO question może być opcja, jeśli kod źródłowy jest stosunkowo proste, ale prawdopodobnie nie, jeśli chcesz obsługiwać pełną moc F #)
możliwy duplikat http://stackoverflow.com/questions/372043/how-can-evaluate-an-expression-stored-as-a-string-in-f – Brian
Czy chcesz załadować kod F # z tego plik? – phimuemue
Myślę, że ten post stawia nieco inne pytanie (choć technicznie związane). Wspomniany przez Briana pyta o proste wyrażenia, podczas gdy ten pyta o kompilację/ocenę pliku. Z technicznego punktu widzenia może to być to samo, ale prawdopodobnie jest to zupełnie inny przypadek użycia. –