2012-09-26 33 views
11

Xin chào, tôi muốn sử dụng Roslyn để viết kịch bản trong ứng dụng của mình. Nhưng tôi có phiên bản mới (tháng 9) và tôi bối rối. Tôi muốn thực thi tập tin với một số chức năng đơn giản. Ví dụ:Roslyn Scripting

public int m(){ 
     return 6; 
} 

Tôi tìm thấy một số bài viết về nó ví dụ acticle. Có một số cách để làm điều đó, nhưng trong phiên bản của tôi không phải là Session.Create() Tôi muốn sử dụng nó như IronPython kịch bản

Cái gì như:

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

hoặc

động d = callFunction (m);

Có thể hoặc tôi phải sử dụng kịch bản IronPython?

+1

Tôi không biết gì về Roslyn, nhưng bạn có thể sử dụng C# như một công cụ scripting không có nó. Bạn có thể sử dụng lớp CSharpCodeProvider từ không gian tên Microsoft.Csharp để biên dịch một assembly tại thời gian chạy và gọi các phương thức hoặc tạo các đối tượng từ assembly đó. Xem ví dụ ở đây để biết ví dụ: http://www.crowsprogramming.com/archives/99 –

+0

Cảm ơn bạn đã trả lời nhanh. Nhưng: Tôi muốn sử dụng nó trong trò chơi Mogre của tôi và người giám sát của tôi nói với tôi để cố gắng sử dụng Roslyn vì nó là trình biên dịch C# được viết bằng C# để nó có thể nhanh hơn nhiều. Tôi không biết điều đó có đúng hay không, nhưng nếu ai đó biết cách làm, thì tôi có thể kiểm tra nó. – wolen

Trả lời

17

API đã không thay đổi đáng kể kể từ khi CTP ban đầu mà bài báo được viết bằng Đối với kịch bản của bạn:.

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