2
런타임에 클래스를 컴파일하는 데 사용하는 다음 코드 조각이 있습니다. 내가 단위 테스트를 디버깅 할 코드를 단계별로, 나는 "결과"의 값이 무엇인지 확인하려고 할 때마다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);
나는 이름 "결과는"현재 컨텍스트에 존재하지 않는 오류가 발생합니다. 왜?
당신이 릴리스 모드에서 디버깅에서 "코드를 최적화 설정은"릴리스 모드에서 실행하거나
코드 최적화는 어떻게됩니까? 이것은 사용하지 않는 변수의 최적화에 발생할 수 있습니다. – Elisha
아니요, 저는 디버그 모드에 있습니다. 디버깅을하는 이유는 다음 줄에서 Assembly를로드하고 Activator.CreateInstance를 사용하기 때문입니다.하지만 찾을 수 없어서 오류가 발생합니다. – epitka
질문을 답변으로 게시하려면 약간 수정하십시오. 프로젝트 빌드 속성에서 "코드 최적화"를 선택했습니다. "사용되지 않는 변수의 최적화"는이를 확인하는 아이디어를주었습니다. – epitka