Estoy compilando un ensamblado dinámico en tiempo de ejecución. Necesita hacer referencia a otra dll. Todo funciona bien, siempre que establezca un OutputAssembly en mis CompilerParameters. Pero tan pronto como configuro GenerateInMemory = true; falla:Compilar una clase en los errores de ejecución cuando CompilerParameters.GenerateInMemory == true
var compilerParameters = new CompilerParameters();
if(compileInMemory)
compilerParameters.GenerateInMemory = true;
else
compilerParameters.OutputAssembly = "<my_dynamic_dll_path>";
compilerParameters.ReferencedAssemblies.Add("<other_dll_path>");
var compilerResults = new CSharpCodeProvider().CompileAssemblyFromDom(compilerParameters, codeCompileUnit);
// Here: compilerResults.Errors.HasErrors == false
foreach(var type in compilerResults.CompiledAssembly.GetTypes())
{
// Exception:
// Unable to load one or more of the requested types.
// Retrieve the LoaderExceptions property for more information.
}
Los LoaderExceptions me están diciendo que "other_dll" no se pudo encontrar. ¿Por qué funciona siempre que no compile en la memoria y qué debo hacer para que funcione en la memoria?
¿Y si codifica la ruta a other.dll? –
Lo siento, la ruta ya está codificada: editaré mi publicación para aclarar – tanascius