[.net] 반사판에 대한 오픈 소스 대안? [닫은]

RedGate의 리플렉터 에 대한 오픈 소스 대안을 아는 사람이 있는지 물어보십시오 . Reflector와 비슷한 도구가 실제로 어떻게 작동하는지 확인하고 싶습니다.

Reflector 의 무료이지만 오픈 소스가 아닌 대안을 알고 있다면 다음 관련 질문에 대답 할 수 있습니다.

요약-2011 년 5 월 11 일 업데이트

제안 된 다양한 오픈 소스 프로젝트 및 도구의 빠른 정리 :

  1. 공통 컴파일러 인프라 (CCI)
  2. 모노 세실
  3. ILSpy
  4. dnSpy ( ILSpy 포크, 프로젝트가 원본보다 활성화 된 것으로 나타남)
  5. 닷넷 IL 편집기 (DILE)
  6. IL.보기
  7. 모노 플 렉터 ( 2011 년 4 월부터 더 이상 활성화되지 않음 )

다음 자료들도 관심이있을 수 있습니다.

  • TypeView.cs
  • .NET 분해 에 대한 Jason Haley의 노트
  • Adrian Bank의 최근 블로그 게시물 에는 아래에 언급되지 않은 몇 가지 옵션을 포함하여 여러 가지 반사판 대안이 요약되어 있습니다.
  • Mark Lichtenberg의 자세한 블로그 게시물에서 여러 오픈 소스 대안 (MonoDevelop을 사용한 DILE, ILSpy 및 Mono Cecil)을 리플렉터와 비교했습니다.


답변

내가 아는 두 가지 옵션.

  • CCI
  • 모노 세실

이것들은 C #을 제공하지 않습니다.


답변

2011 년 12 월 13 일 업데이트

다음과 같은 오픈 소스 도구를 사용할 수 있습니다.


답변

다른 대체품은 dotPeek 입니다. JetBrains는 무료 도구로 발표했습니다. Resharper 와 함께 사용하면 더 많은 기능을 사용할 수 있지만 단독으로 사용하더라도 매우 잘 작동합니다.

사용자 경험은 독립형 디스어셈블러보다 MSVS와 유사합니다. Reflector보다 코드를 읽는 것이 더 좋습니다. Ctrl + T 탐색도 더 적합합니다. 트리를 코드 창과 동기화하는 것이 더 좋습니다.

대체로 아직 개발 중이지만 이미 잘 사용할 수 있습니다.


답변

Telerik은 오늘 자체 디 컴파일 툴인 JustDecompile 베타를 발표했다 . 비공개 소스이지만 무료이며 유망한 것으로 보입니다.


답변

ILSpy훌륭하게 작동합니다!

내가 말할 수있는 한, 리플렉터가했던 것과 똑같이 보이는 모든 것을한다.


답변

실제로 Reflector는 디 컴파일러 기능이있는 디스어셈블러로 간주됩니다. 디스어셈블러는 어셈블리 파일에서 바이트를 읽고 어셈블리 언어 (이 경우 ILasm)로 변환하기 때문에 디스어셈블러입니다. IL을 잘 알려진 패턴 (표현식 및 문장)으로 구문 분석하여 제공하는 디 컴파일러 기능은 C #, VB.Net 등과 같은 고급 언어로 번역됩니다. Reflector 용 addin api를 사용하면 자체 언어 번역기를 작성할 수 있습니다. 당신이 원하지만 … IL을 표현 트리로 구문 분석하는 방법의 마술은 밀접한 비밀입니다.

IL 디스어셈블러의 작동 방식을 이해하려면 위에서 언급 한 세 가지 중 하나를 살펴 보는 것이 좋습니다. Dile, CCI 및 Mono는 모두이 자료의 좋은 소스입니다.

또한 Ecma 335 사양 및 Serge Lidin의 책을 얻는 것이 좋습니다.


답변

내가 리플렉터를 사용한 주된 이유는 (그리고 대부분의 사람들이 그것을 사용한 주된 이유는) 디 컴파일러 때문이었습니다. 메소드의 IL을 소스 코드로 다시 변환 할 수 있습니다.

시점 에서 Monoflector 는 볼 프로젝트입니다. 리플렉션을 수행하는 Cecil과 디 컴파일을 수행하는 Cecil.Decompiler를 사용합니다. 그러나 Monoflector는 두 라이브러리 위에 UI를 계층화하므로 API 사용 방법을 매우 잘 이해할 수 있습니다.

Monoflector는 Reflector를 완전히 대체 할 수있는 훌륭한 대안입니다. 사람들이 Reflector를 사용한 것의 99 % 인 타입을 탐색하고 메소드를 디 컴파일 할 수 있습니다. 가장자리가 매우 거칠지 만 빠르게 변경 될 것이라고 생각합니다.