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 に答える