2009-09-30 13 views
6

Tengo un sistema que compila el código C# en tiempo de ejecución. Me gustaría que los ensamblajes generados se vinculen al sistema en sí. Aquí hay un código de ejemplo que estoy usando:Compilar la extensión del código C# en el tiempo de ejecución

CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary<String, String> { { "CompilerVersion", "v3.5" } }); 
CompilerParameters compilerparams = new CompilerParameters(); 
compilerparams.GenerateExecutable = false; 
compilerparams.GenerateInMemory = true; 
foreach (string name in linkedreferences) 
    compilerparams.ReferencedAssemblies.Add(name + ".dll"); 
Assembly result = provider.CompileAssemblyFromFile(compilerparams, filename); 

Lo que me gustaría hacer es también añadir una referencia al programa principal compilador, así que la extensión recién compilado puede utilizar rutinas de biblioteca del programa compilador.

Assembly entryasm = Assembly.GetEntryAssembly(); 

Entonces la pregunta es esta: ¿cómo puedo agregar una referencia a la entrada en el resultado del ensamblado?

Respuesta

3

¿Has probado esto?

compilerparams.ReferencedAssemblies.Add(entryasm.Location); 
+0

Eso fue exactamente! Gracias. – Whiteknight

Cuestiones relacionadas