実行時にクラスをコンパイルするために使用する次のコード スニペットがあります。
//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);
コードをステップ実行して単体テストをデバッグし、「結果」の値を確認しようとすると、「結果」という名前が現在のコンテキストに存在しないというエラーが表示されます。なんで?