2010-03-19 3 views
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); 

나는 이름 "결과는"현재 컨텍스트에 존재하지 않는 오류가 발생합니다. 왜?

+0

당신이 릴리스 모드에서 디버깅에서 "코드를 최적화 설정은"릴리스 모드에서 실행하거나

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

코드 최적화는 어떻게됩니까? 이것은 사용하지 않는 변수의 최적화에 발생할 수 있습니다. – Elisha

+0

아니요, 저는 디버그 모드에 있습니다. 디버깅을하는 이유는 다음 줄에서 Assembly를로드하고 Activator.CreateInstance를 사용하기 때문입니다.하지만 찾을 수 없어서 오류가 발생합니다. – epitka

+0

질문을 답변으로 게시하려면 약간 수정하십시오. 프로젝트 빌드 속성에서 "코드 최적화"를 선택했습니다. "사용되지 않는 변수의 최적화"는이를 확인하는 아이디어를주었습니다. – epitka

답변

1

릴리스 모드에서 디버깅 하시겠습니까? 이것은 사용하지 않는 변수의 최적화에 발생할 수 있습니다. 예를 들어

: (빌드 탭에서) 프로젝트 속성

관련 문제