Wystarczy zapytać, czy ktoś wie o otwartej alternatywie dla RedGate's Reflector ? Chciałbym sprawdzić, jak działa narzędzie podobne do Reflector.
Uwaga: jeśli znasz bezpłatną, ale nie open source alternatywę dla Reflector, możesz odpowiedzieć na następujące pokrewne pytanie:
Podsumowanie - zaktualizowano 11 maja 2011 r
Szybkie podsumowanie różnych zaproponowanych projektów i narzędzi open source:
- Common Compiler Infrastructure (CCI)
- Mono Cecil
- ILSpy
- dnSpy (rozwidlenie ILSpy, projekt wydaje się bardziej aktywny niż oryginalny)
- Dotnet IL Editor (DILE)
- IL.View
- Monoflector ( nieaktywny od kwietnia 2011 r.)
Interesujące mogą być również następujące zasoby:
- TypeView.cs
- Uwagi Jasona Haleya na temat dezasemblacji platformy .NET
- Ostatni post Adrian Bank na blogu podsumowujący szereg alternatywnych reflektorów, w tym kilka opcji niewymienionych poniżej.
- Szczegółowy post Mark Lichtenberga na blogu porównujący kilka alternatywnych źródeł (DILE, ILSpy i Mono Cecil przy użyciu MonoDevelop) z Reflector.
.net
reflection
open-source
reflector
MagicAndi
źródło
źródło
Odpowiedzi:
2 znane mi opcje.
Nie dadzą ci jednak C #.
źródło
Zaktualizowano 13 grudnia 2011 r
Dostępne są następujące narzędzia typu open source:
źródło
Kolejnym zamiennikiem byłoby dotPeek . JetBrains ogłosił, że jest to bezpłatne narzędzie. Prawdopodobnie będzie miał więcej funkcji, gdy zostanie użyty z Resharperem, ale nawet gdy jest używany sam, działa bardzo dobrze.
Doświadczenie użytkownika bardziej przypomina MSVS niż samodzielny deasembler. Lubię czytać kod bardziej niż w Reflector. Nawigacja Ctrl + T bardziej mi odpowiada. Synchronizacja drzewa z panelem kodu może być lepsza.
Podsumowując, wciąż jest w fazie rozwoju, ale już bardzo dobrze nadaje się do użytku.
źródło
Telerik wydał dzisiaj wersję beta własnego narzędzia do dekompilacji, JustDecompile . Zamknięte źródło, ale bezpłatne i wygląda obiecująco.
źródło
ILSpy działa świetnie!
O ile mogę powiedzieć, robi wszystko, co zrobił Reflektor i wygląda tak samo.
źródło
Właściwie jestem całkiem pewien, że Reflector jest uważany za deasembler z niektórymi funkcjami dekompilatora. Deasembler, ponieważ odczytuje bajty z pliku zestawu i konwertuje go na język asemblera (w tym przypadku ILasm). Funkcja dekompilatora, którą zapewnia, analizując IL w dobrze znane wzorce (takie jak wyrażenia i instrukcje), które następnie są tłumaczone na języki wyższego poziomu, takie jak C #, VB.Net itp. Dodatkowy interfejs dla Reflectora pozwala napisać własny tłumacz języka, jeśli chcesz ... jednak magia tego, jak analizuje IL w drzewa ekspresji, jest ściśle strzeżoną tajemnicą.
Polecam przyjrzeć się którejkolwiek z trzech wyżej wymienionych rzeczy, jeśli chcesz zrozumieć, jak działają deasemblery IL: Dile, CCI i Mono są dobrym źródłem dla tych rzeczy.
Bardzo polecam także zakup specyfikacji Ecma 335 i książki Serge'a Lidina.
źródło
Głównym powodem, dla którego użyłem Reflectora (i myślę, że głównym powodem, dla którego większość ludzi go używało) był jego dekompilator: może on przetłumaczyć IL metody z powrotem na kod źródłowy.
Pod tym względem Monoflector byłby projektem do obejrzenia. Używa Cecil, który wykonuje odbicie, i Cecil.Decompiler, który dokonuje dekompilacji. Ale Monoflector nakłada interfejs na obie biblioteki, co powinno dać ci bardzo dobry pomysł na użycie API.
Monoflector jest również przyzwoitą alternatywą dla reflektora. Pozwala przeglądać typy i dekompilować metody, co stanowi 99% tego, do czego ludzie używali Reflectora. Na brzegach jest bardzo szorstko, ale myślę, że to się szybko zmieni.
źródło
Cóż, sam Reflector jest zestawem .NET, więc możesz otworzyć Reflector.exe w Reflector, aby sprawdzić, jak jest zbudowany.
źródło
Obecnie pracuję nad dezasemblerem / dekompilatorem open source o nazwie Assembly Analyzer. Generuje kod źródłowy dla metod, wyświetla metadane asemblera i zasoby oraz pozwala przejść przez zależności.
Projekt jest hostowany na CodePlex => http://asmanalyzer.codeplex.com/
źródło
Narzędzie Odbłyśnik używa Odbicia.- najwyraźniej to nie jest poprawne.Poprosiłeś o dwie rzeczy - kod, który pokazuje, co robi reflektor, a także alternatywę dla reflektora.
Oto przykład, znacznie uproszczony w porównaniu z tym, co robi reflektor, ale pokazuje technikę odbicia: TypeView.cs
Nie mam propozycji wymiany reflektora na oprogramowanie typu open source.
źródło
System.Reflection
z frameworka, Roeder stwierdził bardzo wcześnie z powodu problemów z załadowaniem i rozładowaniem zestawu.System.Reflection
przestrzeń nazw została rozszerzona od pierwszych dni .NET Reflector. Obsługuje teraz ładowanie i rozładowywanie zestawów w kontekście tylko do odbicia: stackoverflow.com/questions/225330/...