2011-04-12 11 views
9

Tengo un objeto CompilerParameters que utilizo para alimentar un objeto Microsoft.CSharp.CSharpCodeProvider y un objeto ICodeCompiler que se deriva de eso.Suministro de ensamblaje a compilador Parámetros a los que se hace referencia ¿Se ensambla desde la memoria y no desde el disco?

Todo funciona bien, y puedo compilar el código sobre la marcha. Mi problema es con los ensambles a los que se hace referencia. En este momento, simplemente agrego todos los ensamblados desde System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies() en el parámetro del compilador ReferencedAssemblies. Esto funciona para archivos en el disco duro. Sin embargo, tengo un ensamblaje que está en la memoria y no en el disco. Cuando trato de referenciarlo, obtengo un FileNotFoundException que espero, ya que está tratando de agregar una ruta que no existe.

Entonces, ¿cómo paso en un objeto real Assembly al CompilerParameters.ReferencedAssemblies?

He visto algunas publicaciones en línea desde 2006 y antes de eso, dicen que simplemente no es posible. Espero con .net 3.5 y .net 4.0 que se haya agregado el soporte para este tipo de cosas, pero no estoy seguro.

FYI, estoy usando .NET 4,0


También, en este momento estoy creando un archivo temporal del byte [] en el espacio del programa, a continuación, cargar ese archivo en una asamblea. Sé que el compilador hace esto en segundo plano, pero también lo limpia, creo. Sería genial si pudiera:

CompilerParameters.ReferencedAssemblies.Add(Assembly a) 
+0

No me di cuenta que era un concurso, o que incluso "se suponía" que marcara las preguntas como respondidas. – Nick

Respuesta

0

¿Tiene el conjunto en memoria que desea agregar como referencia?

No estoy seguro de que este enfoque sea compatible con CSharpCodeProvider.

Cuestiones relacionadas