2012-09-26 50 views
11

嗨我想在我的應用程序中使用Roslyn腳本。但我有新的(九月)版本,我很困惑。我想用一些簡單的函數執行文件。 例如:Roslyn腳本

public int m(){ 
     return 6; 
} 

我發現了一些文章對此例如acticle。有一些方法來做到這一點,但在我的版本是不是Session.Create() 我想使用它像IronPython的腳本

喜歡的東西:

var scriptEngine = new SciptEngine.ExecuteFile(fileWithFunction); 
dynamic d = getFunction(m); 

動態d = callFunction(M );

是否有可能或者我必須使用IronPython腳本?

+1

我不知道什麼羅絲琳,但你可以使用C#作爲一個腳本引擎沒有它。您可以使用命名空間Microsoft.Csharp中的類CSharpCodeProvider在運行時編譯程序集並調用方法或從該程序集創建對象。例如,請參閱此處的示例:http://www.crowsprogramming.com/archives/99 –

+0

感謝您的快速回答。但是:我想在我的Mogre遊戲中使用它,並且我的主管告訴我嘗試使用Roslyn,因爲它是用c#編寫的c#編譯器,所以它可以更快。我不知道這是否屬實,但如果有人知道如何去做,那麼我可以測試它。 – wolen

回答

17

的API並沒有因爲該文章的原文CTP顯著改變您的方案:

var scriptEngine = new ScriptEngine(); 
var session = scriptEngine.CreateSession(); 
session.AddReference("System"); 
session.AddReference("System.Core"); 
session.Execute(@"public int m() { return 6; }"); 

int six = session.Execute<int>("m()");