CSharpCodeProvider: почему результат компиляции выходит из контекста при отладке
У меня есть следующий фрагмент кода, который я использую для компиляции класса во время выполнения.
//now compile the runner
var codeProvider = new CSharpCodeProvider(
new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
string[] references = new string[]
{
"System.dll", "System.Core.dll", "System.Core.dll"
};
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.AddRange(references);
parameters.OutputAssembly = "CGRunner";
parameters.GenerateInMemory = true;
parameters.TreatWarningsAsErrors = true;
CompilerResults result = codeProvider.CompileAssemblyFromSource(parameters, template);
Всякий раз, когда я перехожу через код для отладки модульного теста, и я пытаюсь увидеть, что такое значение "result", я получаю ошибку, что имя "result" не существует в текущем контексте. Почему?
1 ответ:
Выполняется ли отладка в режиме выпуска? Это может произойти при оптимизации неиспользуемой переменной.
Например:
public void OptimizedMethod() { int x = 5; // In optimized mode it's not possible to watch the variable }
Оптимизация кода происходит при запуске в режиме выпуска или при установке параметра "оптимизировать код" в свойствах проекта (на вкладке сборка)