Không có chức năng nào cho phép bạn thực hiện việc này trực tiếp. Tuy nhiên, khi bạn muốn biên dịch một tệp nguồn F # theo lập trình, bạn có thể gọi trình biên dịch F # từ ứng dụng của bạn. Cách dễ nhất để làm điều này là sử dụng nhà cung cấp F # CodeDOM, có sẵn như là một phần của F # PowerPack (trong assembly FSharp.Compiler.CodeDom.dll
). Tuy nhiên, lưu ý rằng bạn cần cài đặt trình biên dịch F # trên máy của người dùng.
Các mã để chạy trình biên dịch sẽ trông gần như thế này:
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")
Khi bạn biên dịch tập tin nguồn thành một assembly, bạn sẽ cần phải tải lắp ráp sử dụng .NET Reflection và chạy một số chức năng cụ thể hoặc lớp học từ assembly (bạn có thể tìm kiếm một hàm với một số tên đặc biệt hoặc được đánh dấu bằng một số thuộc tính).
(Lưu ý bên cạnh, sử dụng các trích dẫn hoặc viết thông dịch viên của riêng bạn như được đề cập trong related SO question có thể là một tùy chọn nếu mã nguồn của bạn tương đối đơn giản, nhưng có thể không nếu bạn muốn hỗ trợ toàn bộ F #)
Nguồn
2010-04-09 14:25:46
bản sao có thể có của http://stackoverflow.com/questions/372043/how-can-evaluate-an-expression-stored-as-a-string-in-f – Brian
Bạn có muốn tải mã F # từ đó không tập tin? – phimuemue
Tôi nghĩ bài đăng này sẽ hỏi một câu hỏi khác (mặc dù về mặt kỹ thuật có liên quan). Người được Brian đề cập hỏi về các biểu thức đơn giản, trong khi người này hỏi về việc biên dịch/đánh giá một tệp. Về mặt kỹ thuật, điều này có thể giống nhau, nhưng nó có thể là trường hợp sử dụng khá khác nhau. –