Para las pruebas he usado una aplicación de consola con el siguiente código:de compilación en tiempo de ejecución (generación DLL) dentro de una aplicación MVC 3
public string CODEInString = @"namespace MyNamespace.Generator
{
public class Calculator
{
public int Sum(int a, int b)
{
return a + b;
}
}
}";
public void Create()
{
var provider = new CSharpCodeProvider();
var cp = new CompilerParameters
{
GenerateInMemory = false,
OutputAssembly = "AutoGen.dll"
};
provider.CompileAssemblyFromSource(cp, CODEInString);
}
Con este código dentro de una aplicación de consola que puede hacer que funcione y la AutoGen Se crea el archivo .dll, desde ese punto puedo invocar los métodos de la calculadora.
Mi problema ocurre cuando hago el mismo código pero dentro de una aplicación MVC 3. Puedo atrapar la excepción si uso la siguiente variable.
var compileResult1 = provider.CompileAssemblyFromSource(cp, CODEInString);
'compileResult1.CompiledAssembly' produjo una excepción de tipo System.IO.FileNotFoundException'
También probé a usar Server.MapPath ("~/bin /") para decirle al directorio de salida .
¿Alguien podría ayudarme aquí? Gracias
ACTUALIZA 1 di permisos de carpeta para el usuario correcto con el fin de escribir, por lo que no es el problema.
¿Qué le parece las referencias? ¿Están todos allí? –
¿A cuáles te refieres? – Dryadwoods
Compilarlo 'InMemory'. – leppie