2012-09-26 35 views
11

Merhaba Uygulamamda komut dosyası oluşturmak için Roslyn'i kullanmak istiyorum. Ama yeni (Eylül) versiyonum var ve kafam karıştı. Ben sadece bazı fonksiyonları ile dosya çalıştırmak istiyorum. Örneğin : Roslyn Komut Dosyası

public int m(){ 
     return 6; 
} 

Ben örneğin acticle bu konuda bazı makaleler buldum. Bunu yapmanın bir yolu, ama benim sürümde ben IronPython komut dosyası

şey gibi gibi kullanmak istiyorum Session.Create() değildir:

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

veya

dinamik d = CallFunction (m);

Mümkün mü veya IronPython komut dosyası kullanmalı mıyım?

+1

Ben Roslyn hakkında hiçbir şey bilmiyorum, ama bir betik motoru olarak C# kullanabilirsiniz Onsuz. Çalışma zamanında bir derleme derlemek ve yöntemleri çağırmak veya bu derlemeden nesneleri oluşturmak için Microsoft.Csharp ad sınıfından CSharpCodeProvider sınıfını kullanabilirsiniz. Örneğin bir örnek için bakınız: http://www.crowsprogramming.com/archives/99 –

+0

Hızlı cevap için teşekkürler. Ama: Mogre oyunumda kullanmak istiyorum ve danışmanım Roslyn'i kullanmaya çalışmamı söyledi çünkü C# derleyicisi C# ile yazılmış olduğundan çok daha hızlı olabilirdi. Doğru olup olmadığını bilmiyorum, ama eğer birisi nasıl yapılacağını biliyorsa, ben de bunu test edebilirim. – wolen

cevap

17

API makale yazılmış orijinal CTP beri önemli ölçüde değişmedi sizin senaryosu için:.

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()");