문제

방금 사용하여 디버깅하는 프로젝트를 분해했습니다 반사기, 그러나 자동 속성의 '컴파일 결과'를 디코딩하는 데 걸리는 것처럼 보입니다. 예를 들어 다음 줄은 구문 오류를 제공합니다. 수동으로 수정하려고 시도했지만 수정 할 때마다 더 많이 나타납니다.

private string <GLDescription>k__BackingField;

이것에 대해 할 수있는 일이 있습니까?

도움이 되었습니까?

해결책

하아! 멍청한 나 : 내가해야 할 일은 반사기의 옵션에서 디스 고기 최적화를 .NET 3.5로 설정하는 것입니다. 광산은 2.0에있었습니다.

다른 팁

이 컴파일러는 "말할 수없는 이름"을 가진 필드를 생성합니다. 즉, C# 자체에서 불법이지만 유효한 IL 인 필드.

IL을 "정상"C# (자동 속성 없음)으로 정확하게 번역 한 것은 없습니다. 당신은 교체 할 수 있습니다 < 그리고 > ~와 함께 _ 법률 코드를 제공하지만 물론 그렇지 않을 것입니다. 바로 그거죠 더 이상 같은 코드. 그러나 디버그 능력 이후에만 문제가되지 않습니다.

반복자를 디 컴파일하는 경우 (즉, 사용 방법을 사용합니다 yield 진술) 사용을 포함하여 더 많은 것을 찾을 수 있습니다. fault 블록 finally 블록이지만 예외가 발생했을 때만 실행됩니다 (그러나 예외를 포착하지 않고). 기타 다양한 구성은 익명의 방법, 람다 표현식 및 익명 유형을 포함하여 말할 수없는 이름도 생성됩니다.

더 넓은 점 에서이 코드를 디 컴파일 할 수있는 권한이 있습니까? 저자가 당신이 그렇게하는 것을 신경 쓰지 않는다면, 그들은 당신에게 인생을 더 쉽게 만들 수있는 소스 코드를 기꺼이 줄 것입니다. 만약 그들이 ~하지 않다 소스 코드를 디버깅하기를 원한다면 코드를 디 컴파일하는 윤리적 (그리고 잠재적으로 합법적 인) 파급 효과를 고려해야합니다. 이것은 위치마다 다를 수 있습니다 :보다 결정적인 지침을 위해 실제 변호사와 상담하십시오.

편집 : 자신의 대답을 보았을 때 많은 의미가 있습니다. 배경 자료를 위해 이것을 여기에 두십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top