No estoy muy seguro de a dónde ir con esto. El objetivo general es poder tomar una secuencia de comandos de usuario y ejecutarla en un entorno .NET. Tengo la mayor parte del código escrito y las cosas funcionan siempre que no intente cargar mis propios ensamblajes. Sin embargo, para que los usuarios accedan de manera segura a las partes internas del sistema, se ha creado una DLL proxy. Aquí es donde parece que está el problema.Cargando ensamblajes personalizados con CompileAssemblyFromSource
En este momento, esta DLL proxy tiene una cosa, una interfaz.
CompilerParameters options = new CompilerParameters();
options.GenerateExecutable = false;
options.GenerateInMemory = true;
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("ScriptProxy.dll");
Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
CompilerResults result = provider.CompileAssemblyFromSource(options, script);
// This line here throws the error:
return result.CompiledAssembly;
Ejecutar el código anterior, que arroja el siguiente error:
System.IO.FileNotFoundException : Could not load file or assembly 'file:///C:\Users...\AppData\Local\Temp\scts5w5o.dll' or one of its dependencies. The system cannot find the file specified.
Por supuesto, mi primer pensamiento es: "... y lo que es scts5w5o.dll?"
¿Este es el ScriptProxy.dll
que no se carga correctamente, o es el propio ScriptProxy.dll el que intenta cargar las dependencias, que están en un archivo temporal en alguna parte? O es algo completamente diferente?
Debo mencionar que estoy ejecutando este código desde el corrector de prueba NUnit. No estoy seguro si eso hace la diferencia.
Eso tendría sentido. Voy a probar esto ahora mismo. –
Voy a marcar esto como la respuesta porque aunque no resolvió el problema por decir, me ayudó a obtener el mensaje de error real que es casi tan útil. –
Entonces, ¿cómo resuelves el problema real? – Moumit