2011-07-28 55 views
7

是否可以從C#應用程序(主機)的內部(以及上下文)中輕鬆運行F#腳本。如何在C#應用程序的上下文中運行F#腳本

隨着「的背景下,」我的意思是下面應該是真實的:

  • 爲腳本
  • 從F#腳本訪問主機應用程序的靜態內容的執行沒有單獨的進程(類,屬性,方法)

基本上我正在尋找類似的這種假設API調用

FSharpScriptRunner.RunInContext(string script); 
的API

請幫忙。

-Matthias

+0

你可以做到這一點,但要記住F#不是一種腳本語言,它是一種靜態類型的編譯語言。您提到的用例更適合於像IronJS,IronPython等DLR基礎語言。 – Ankur

回答

9

目前還沒有這樣的API,但你可以很輕鬆地做類似的事情在幾個步驟: -

1)使用F#的CodeDOM,(FSharp.Compiler.CodeDom.dll)提供動力單元,來動態編譯你的腳本。 Power Pack包含apis來編譯單個文件並允許您添加對當前應用程序的引用,從而使腳本可以訪問主機應用程序的類,屬性和方法。

2)編譯階段結束時,你應該在內存中有一個動態程序集。然後,您可以使用反射從腳本創建對象的動態實例並執行它。

2

你爲什麼不只是編譯F#代碼到一個程序,然後引用從C#應用程序?

+0

F#代碼應該從應用程序中輸入和編輯 – mklein

相關問題