리플렉터에 대한 오픈 소스 대안?
레드게이트의 리플렉터를 대체할 오픈 소스에 대해 아는 사람이 있는지 물어보려고요?Reflector와 유사한 도구가 실제로 어떻게 작동하는지 확인하고 싶습니다.
Reflector에 대한 무료이지만 오픈 소스가 아닌 다른 방법을 알고 있다면 다음과 관련된 질문에 대답할 수 있습니다.
요약 - 2011년 5월 11일 업데이트됨
제안된 다양한 오픈 소스 프로젝트 및 도구에 대한 간략한 요약:
- CCI(Common Compiler Infrastructure)
- 모노 세실
- ILSpy
- dnSpy(ILSpy의 포크, 프로젝트가 원래보다 더 활성화된 것으로 나타남)
- Dotnet IL 편집기(DIL)
- IL.보기
- 모노플렉터(2011년 4월 현재 더 이상 활성화되지 않음)
다음 리소스도 관심을 가질 수 있습니다.
- TypeView.cs
- .NET 분해에 대한 제이슨 헤일리의 메모
- Adrian Bank의 최근 블로그 게시물에는 아래에 언급되지 않은 몇 가지 옵션을 포함하여 다양한 Reflector 대안이 요약되어 있습니다.
- Mark Lichtenberg의 여러 오픈 소스 대안(MonoDevelop을 사용하는 DILE, ILSpy 및 Mono Cecil)을 Reflector와 비교한 자세한 블로그 게시물.
2011년 12월 13일 업데이트
다음과 같은 오픈 소스 도구를 사용할 수 있습니다.
- 샤프 개발팀의 ILSpy입니다.도구를 강조하는 Scott Hanselman의 트윗 덕분입니다.
- Dotnet IL 편집기(분해기)
- IL.View - Silverlight 4에서 Out-of-Browser Silverlight 응용 프로그램으로 작성된 .NET Reflector 대체 버전입니다.자세한 내용은 이 블로그 게시물을 참조하십시오.
또 다른 대체품은 dotPeek일 것입니다.JetBrains는 그것을 무료 도구로 발표했습니다.그것은 아마도 그들의 리샤퍼와 함께 사용할 때 더 많은 기능을 가질 것이지만, 단독으로 사용해도 매우 잘 작동합니다.
사용자 환경은 독립형 분해기보다는 MSVS에 더 가깝습니다.나는 Reflector에서보다 코드 읽기를 더 좋아합니다.Ctrl+T 네비게이션도 저에게 더 잘 어울립니다.트리를 코드 창과 동기화하는 것이 더 나을 수 있습니다.
대체로, 그것은 여전히 개발 중이지만 이미 매우 유용합니다.
제가 아는 옵션은 두 가지입니다.
- CCI
- 모노 세실
하지만 이것들은 당신에게 C#을 주지 않을 것입니다.
텔레릭은 오늘 자체 디컴파일 툴인 저스트 디컴파일의 베타 버전을 출시했습니다.폐쇄적인 소스이지만 자유롭고 유망해 보입니다.
ILSpy는 잘 작동합니다!
내가 보기에는 리플렉터가 했던 모든 것을 수행하고 동일하게 보입니다.
사실 리플렉터는 디컴파일러 기능이 있는 디스어셈블러로 간주됩니다.어셈블리의 파일에서 바이트를 읽고 어셈블리 언어(이 경우에는 ILASM)로 변환하므로 디스어셈블러입니다.IL을 잘 알려진 패턴(예: 식 및 문)으로 구문 분석하여 제공하는 디컴파일러 기능은 C#, VB와 같은 고급 언어로 변환됩니다.그물망 등Reflector용 addin api를 사용하면 원하는 경우 직접 언어 번역기를 작성할 수 있습니다.하지만 IL을 표현 트리에 구문 분석하는 마법은 철저히 보호되는 비밀입니다.
IL 분해기의 작동 방식을 이해하고 싶다면 위에서 언급한 세 가지 중 하나를 검토할 것을 권장합니다. Dile, CCI 및 Mono는 모두 이를 위한 좋은 소스입니다.
저는 Ecma 335 스펙과 Serge Lidin의 책도 추천합니다.
리플렉터를 사용한 주된 이유(그리고 대부분의 사람들이 사용한 주된 이유)는 디컴파일러 때문이었습니다. 그것은 메서드의 IL을 소스 코드로 다시 변환할 수 있습니다.
그 점에서 모노플렉터는 지켜볼 프로젝트가 될 것입니다.그것은 반사를 하는 세실과 세실을 사용합니다.디컴파일러, 디컴파일을 수행합니다.그러나 모노플렉터는 두 라이브러리 위에 UI를 계층화하므로 API를 사용하는 방법에 대한 매우 좋은 아이디어를 제공합니다.
모노플렉터는 또한 리플렉터를 완전히 대체할 수 있는 좋은 방법입니다.사용자가 Reflector를 사용한 용도의 99%에 해당하는 유형을 검색하고 메서드를 압축 해제할 수 있습니다.가장자리가 매우 거칠지만, 저는 그것이 빠르게 바뀔 것이라고 생각합니다.
Reflector 자체는 .NET 어셈블리이므로 Reflector를 열 수 있습니다.Reflector의 exe를 클릭하여 작성 방법을 확인합니다.
저는 현재 Assembly Analyzer라는 오픈 소스 디스어셈블러/디컴파일러 작업을 하고 있습니다.메서드에 대한 소스 코드를 생성하고 어셈블리 메타데이터 및 리소스를 표시하며 종속성을 살펴볼 수 있습니다.
이 프로젝트는 CodePlex => http://asmanalyzer.codeplex.com/ 에서 호스팅됩니다.
Reflector 도구는 Reflection을 사용합니다.
분명히 이것은 정확하지 않습니다.
당신은 리플렉터가 하는 일을 보여주는 코드와 리플렉터의 대안이라는 두 가지를 요구했습니다.
다음은 Reflector의 기능을 훨씬 단순화한 예제이지만, 반사 기술을 보여줍니다.TypeView.cs
오픈 소스 리플렉터 교체에 대한 제안이 없습니다.
언급URL : https://stackoverflow.com/questions/2425973/open-source-alternatives-to-reflector
'programing' 카테고리의 다른 글
| 속성에 대한 바인딩 상태에 대한 [(ngModel)]과 [ngModel]의 차이점은 무엇입니까? (0) | 2023.06.03 |
|---|---|
| iframe에 CSS를 어떻게 적용합니까? (0) | 2023.05.29 |
| Exec : stdout "live" 표시 (0) | 2023.05.29 |
| 원격 서버의 Mongodump (0) | 2023.05.29 |
| Rect를 그리거나 그렇지 않으면 Rect를 그리거나 하지 않습니다(drawRect/Core Graphics 대 subview/images 중 언제 사용해야 하며 그 이유는 무엇입니까?) (0) | 2023.05.29 |