2012-09-26 18 views
11

Hola, quiero usar Roslyn para crear scripts en mi aplicación. Pero tengo una nueva versión (de septiembre) y estoy confundido. Quiero ejecutar el archivo con alguna función simple. Por ejemplo:Roslyn Scripting

public int m(){ 
     return 6; 
} 

He encontrado algunos artículos al respecto, por ejemplo, acticle. Hay una cierta manera de hacerlo, pero en mi versión no es Session.Create() quiero usarlo como IronPython scripting

Algo así como:

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

o

dinámica d = CallFunction (m);

¿Es posible o debo usar scripting IronPython?

+1

no sé nada acerca de Roslyn, pero se puede utilizar C# como un motor de scripting sin ello. Puede utilizar la clase CSharpCodeProvider del espacio de nombres Microsoft.Csharp para compilar un ensamblado en tiempo de ejecución e invocar métodos o crear objetos a partir de ese ensamblaje. Ver por ejemplo aquí para un ejemplo: http://www.crowsprogramming.com/archives/99 –

+0

Gracias por una respuesta rápida. Pero: quiero usarlo en mi juego Mogre y mi supervisor me dijo que intentara usar Roslyn porque es un compilador de C# escrito en C# por lo que podría ser mucho más rápido. No sé si es cierto, pero si alguien sabe cómo hacerlo, puedo probarlo. – wolen

Respuesta

17

La API no ha cambiado significativamente desde el CTP original que el artículo fue escrito en Para su escenario:.

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