2

我有以下代码片段,用于在运行时编译类。

//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);

每当我逐步调试代码以调试单元测试时,我尝试查看“结果”的值是什么,我得到一个错误,即名称“结果”在当前上下文中不存在。为什么?

4

1 回答 1

1

你是在发布模式下调试吗?这可能发生在未使用变量的优化上。

例如:

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

在发布模式下运行或在项目属性中设置“优化代码”时会发生代码优化(在构建选项卡下)

于 2010-03-19T19:50:35.230 回答