2011-10-14 1 views
5

여러 소스와 함께 CompileAssemblyFromSource을 사용하여 코드를 동적으로 컴파일하고 있습니다..NET CompileAssemblyFromSource : 실패한 원본 확인?

컴파일 오류가 발생하면 Errors 컬렉션에서 줄 번호 등을 검색 할 수 있습니다.

그러나 줄 번호는 모든 출처의 줄 번호입니다. 내가 원했던 것은 실패한 소스 (추가 된 소스 중)의 소스 및 라인 번호입니다.

계산 곡예를하지 않고도 가능합니까?

+3

대신에 (적어도 디버그 또는 자세한 옵션으로)'CompileAssemblyFromFile'을 사용하는 것을 고려해 볼 수 있습니다. 사실 후에 소스를보고 무슨 일이 일어나고 있는지 볼 수 있습니다. 임시 파일을 사용하면 나중에 정리할 수 있습니다 ... –

+1

@Paul 답변이 있어야합니다! –

+0

@Paul : 임시 파일에 쓰기 사용할 수 없습니다. 두려워요. 내 솔루션 (특정 문제가 있음)에서 소스는 여러 개별 소스 (최종 사용자도 포함)에서 수집되므로 문제가있는 실제 소스 만 확인하면됩니다. –

답변

0

내 앱에서이 작업을 수행하고 오류가있는 경우 컴파일 된 소스 (컴파일러 오류를 생성 한 소스)와 컴파일 중에 생성 된 모든 오류 메시지를 작성합니다. 이러한 오류 메시지를 주석에 넣고 소스 파일의 끝에 추가합니다. 사용자 temp 디렉토리의 파일에서 올바르게 기억되면 File.WriteAllText()로 소스 파일을 작성한 다음 해당 소스 모듈에 대한 경로와 함께 예외를 throw합니다. 이 모든 것은 컴파일 오류가있는 경우에만 발생합니다. 오류가 없다면, 나는이 방법으로 소스를 작성하지 않는다.

모든 소스를 단일 모듈로 연결했기 때문에 필자의 경우 실제로 모듈 하나만 있습니다. 이 상황에서 "줄 143"이 무엇을 의미하는지 혼란스럽지 않습니다.

관련 문제