2016-06-20 2 views
-2

.Net 1.1에서 개발 된 이전 소스 코드 중 하나를 디 컴파일하려고합니다. 나는 서로 다른 디 컴파일러 도구를 시도했지만 그들 중 아무도 나에게 컴파일 할 수있는 좋은 결과를 줄 수 없었다. 일반적으로 .NET 1.1에는 많은 오류가있는 코드 부분이 있지만 2.0 이상에서는 괜찮은 코드입니다. 그래서 그들은 1.1보다 새로운 버전의 .Net으로 디 컴파일한다고 가정하고 있습니다. 이미 사용했던 도구는 Reflector, dotPeek, CodeReflect 등입니다. 나는 1.1에서 디 컴파일 할 수있는 도구가 필요하고 1.1에서 동일한 코드를 컴파일 할 수있을 것이다. 무료 도구 일 필요는 없지만 컴파일 할 수 있도록 코드를 저장할 수 있어야한다..Net 1.1 디 컴파일 도구

감사

+0

호기심에서 벗어나서 2.0으로 업그레이드하는 것이 옵션이 아닌 것입니까? –

+0

.NET Reflector의 아주 오래된 버전을 찾으려고 할 수 있습니다. 첫 번째 .NET 디 컴파일러 AFAIK입니다. 다른 제품은 Red Gate가 구매 한 후에 도구가 무료로 유지 될 것이라는 약속을 지키지 않은 상태에서 제작되었습니다. –

+0

이 시점에서 새로운 회사는 업그레이드가 필요하지 않지만 새로운 코드가 나오고 있지만이 버전에서 선호하는 몇 가지 변경 사항이 있으며 사이트의 모든 단일 부분을 테스트하고 싶지는 않습니다. – Ehsan

답변

1

확률이 조립체 든 (IL 최적화, 즉 난독 2.0 .NET으로 변환 등)을 수정 후 컴파일되어있다.

어셈블리가 C# (VB에서도 유효 함)로 작성되었다고 가정하면 C# 1.2에서 만들어졌습니다. C# 2.0은 .NET 2.0과 함께 제공됩니다. 따라서 decompiling은 유효한 C# 2.0 코드와 잘못된 C# 1.2 코드를 생성합니다. 즉, 디 컴파일 된 코드는 제네릭, 반복기 등과 같은 C# 2.0에 도입 된 언어 기능을 사용합니다. 그러나 C# 2.0에 도입 된 모든 새로운 기능은 IL 매크로 즉, 컴파일러는 주어진 언어 기능에 대해 사전 정의 된 IL 조각을 생성합니다 (어떤 경우 전체 메서드 또는 클래스). 따라서, 이들 언어 특징은 IL 패턴 매칭에 의해 역 컴파일된다. 즉, 디 컴파일러는 매우 특정한 컴파일러에 의해 생성 된 이들 일리노이 조각을 찾아 언어 특징으로 다시 변환한다. C# 1.2 컴파일러가 동일한 IL 패턴을 생성 할 가능성은 매우 낮습니다. 제네릭이나 반복자를 위해 C# 2.0 컴파일러에서 생성 된 IL은 매우 독특하며 C# 1.2 컴파일러는 거의 비슷한 것을 생성 할 수 없습니다.

이 어셈블리에서는 JustDecompile을 사용하고 있지만 .net 1.1이 설치된 컴퓨터에서 수행하십시오 (참조 된 어셈블리에 액세스하면 디 컴파일러가 도움이됩니다). 디 컴파일 된 무효 C# 1.1 코드 샘플을 제공하십시오.