Я компилирую динамическую сборку во время выполнения. Он должен ссылаться на другую dll. Все работает нормально, пока я устанавливаю OutputAssembly в своих CompilerParameters. Но как только я установил GenerateInMemory = true; он не работает:Компиляция класса во время выполнения сбоя, когда 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.
}
LoaderExceptions говорят мне, что «other_dll» не удалось найти. Почему он работает до тех пор, пока я не компилирую в памяти и что мне делать, чтобы заставить его работать в памяти?
И если вы жестко закодировали путь к other.dll? –
Прошу прощения, путь уже жестко запрограммирован - отредактировал мое сообщение, чтобы уточнить – tanascius