2010-06-11 4 views
4

최신 .NET Reflector를 사용하여 소스 코드를 거의 복구 할 수없는 내부 레거시 응용 프로그램을 디스 어셈블합니다. 나는 불쾌한 버그의 원인을 찾아 패치 할 필요가있다. Reflector는 프로젝트 구조를 다시 만들 때 평소대로 잘했으나 곧 속성 호출이 get_()set_() 메서드 서명에 "확장 된"상태로 남겨져 소스 코드를 컴파일 할 수 없게된다는 것을 발견했습니다..NET Reflector 및 getters/setters 문제

처음에는 모든 get/set 호출에 문제가 있다고 생각했습니다. 그러나 좀 더 자세히 살펴보면 몇 가지 항목이 정상이며 다른 항목 (특히 OleDbCommand 및 Forms.Control 속성)은 get_()set_()으로 생성됩니다.

정규식으로 Visual Studio "검색/바꾸기"를 사용하면 이러한 문제를 해결할 수 있지만 어색합니다. 리플렉터가 올바르게 작동하도록하는 방법이 있습니까 ?

편집 1 - 아래의 샘플 문제 코드 :

/* Generated by .NET Reflector 6.1.0.11 */ 
/* The variable selectCommand is a OleDbCommand. */ 
string parameterName = "@P" + Convert.ToString(num); 
selectCommand.set_CommandText(selectCommand.get_CommandText() + " WHERE SIGLA = " + parameterName); 
/* 
    Expected something like this (as ugly as it may seem): 
    selectCommand.CommandText = selectCommand.CommandText + " WHERE SIGLA = " + parameterName; 
*/ 

편집 2 - 조립이 릴리스 모드에 지어졌다.

+0

레트로 목적으로 작성된 .Net의 버전은 무엇일까요? –

+0

@ Jason, 2.0 프레임 워크 앱입니다. – Humberto

+0

Jason Bock이 추가 한 FileGenerator를 사용해 보면 2.0 어셈블리에서 정상적으로 작동해야합니다. http://www.jasonbock.net/JB/CodeFileGenerator.aspx 또한 양식에 대한 디자이너 파일을 분리하는 편집 된 버전이 있습니다. http://jasonhaley.com/files/FileGenerator2.zip 자동 등록 정보와 같은 .net 3.5 기능). –

답변

0

어디에서 반사경의 소스 코드를보고 있습니까? 현재 버전 (이 글을 쓰고있는 시점의 6.1.0.11)에서 유형을 디스 어셈블하고 하단의 "메소드 확장"을 클릭하면 올바른 속성 구문 (get { ... }set { ... })을 포함한 전체 클래스 정의가 생성됩니다.

+0

죄송 합니다만, 나는 재산 신고를 한 것이지 선언은 아니며 괜찮습니다. (방금 내 질문을 편집했습니다.) – Humberto

+0

@Humberto : 아직이 문제가 보이지 않습니다. 내 버전에서, 속성 가져 오기 및 설정은'get _()'및'set _()'이 아닌 속성 구문을 사용하여 수행됩니다. –

+0

@Humberto : 또한 내보내기 기능을 사용하여 테스트했으며 정확한 구문도 생성합니다. –

0

이 문제는 Managed C++로 디스 어셈블하는 것과 함께 나타납니다. 그렇습니까? C# 코드로 분해하려고 할 수 있습니다 (도구 상자에 드롭 다운이 있음) 일반적인 속성을 얻을 수 있습니다.

+0

사실, 모든 C# 코드입니다. 어쨌든 고마워. – Humberto

+0

반사경 (6.1.0.11)에서 C#으로 분해 할 때 정상적인 속성을 볼 수 있습니다. 그래서 당신의 문제는 다른 곳에 있습니다. – Femaref

+0

@Femaref, 문제를 설명하기 위해 몇 가지 코드를 포함 시켰습니다. 감사! – Humberto

0

이 질문이 아직 오래 되었더라도 정답이 결코 달성되지 않을지라도, 이제는 블록 ILSpy에 새로운 도구를 제공 할 수 있습니다.

아마도 더 나은 소스 코드를 제공 할 것입니다.