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 2

1 ответ:

Выполняется ли отладка в режиме выпуска? Это может произойти при оптимизации неиспользуемой переменной.

Например:

public void OptimizedMethod()
{
    int x = 5; // In optimized mode it's not possible to watch the variable
}

Оптимизация кода происходит при запуске в режиме выпуска или при установке параметра "оптимизировать код" в свойствах проекта (на вкладке сборка)