2012-01-26 13 views
29

Czasami chciałbym szybko zobaczyć reprezentację IL moich fragmentów kodu w języku C#, aby zrozumieć, co dokładnie dzieje się z różnymi instrukcjami kodowymi pod maską, tak jak to zrobiono here for example.Narzędzie do łatwej inspekcji kodu IL

Wiem, że są ildasm, Reflector, ILSpy, dotPeek i prawdopodobnie sporo innych dostępnych narzędzi. Zastanawiam się nad tym, że jeśli istnieje jakiś bardziej elegancki sposób, od napisania niektórych linii kodu do wyświetlenia odpowiadającego IL, niż skompilowanie kodu .net, załadowanie zestawu do jednego z tych programów i znalezienie kodu, który jest ciekawy .

Może mieć wtyczkę do wizualnego studia, która dodałaby opcję kliknięcia prawym przyciskiem myszy "kompiluj i zobacz kod IL" lub jakikolwiek inny wygodny sposób?

Edit:

Po kilka googlowania znalazłem NDasm codeplex project który robi to, co szukałem - integruje się z Visual Studio.

Ale sugestia LINQPada firmy vcsjones również jest świetna, dlatego zaznaczam ją jako zaakceptowaną, dziękuję. Naprawdę użyteczne narzędzie ...

+0

Jestem pewien, że Visual Studio Ultimate może to zrobić, przy okazji. – Ryan

+0

@minitech Naprawdę? W jaki sposób? – CodingGorilla

+0

@CodingGorilla: Nie pamiętam. Widziałem to raz, ale nigdy go nie kupiłem ... no wiesz, to 15 000 $. – Ryan

Odpowiedz

47

Zwykle używam do tego LINQPad. Wystarczy wkleić trochę C# i przejść do widoku IL. Na przykład:

enter image description here

Lubię go, ponieważ można też po prostu pisać wyrażeń lub oświadczenia zamiast pełnego programu:

enter image description here

Najlepszy ze wszystkich, to nic nie kosztuje (z opcjonalnych funkcji premium).

+8

Warto chyba zauważyć, że LINQPad jest niesamowite narzędzie, które powinien mieć każdy programista, nawet jeśli nigdy nie patrzy na IL. Jest pomocny na * wiele * sposobów. – vcsjones

+0

IL ma również wskazówki dotyczące narzędzi, więc możesz zobaczyć, co to wszystko robi, jeśli nie wiesz/rozpoznaje. Będzie również komentował nazwy zmiennych, a także wyświetlał ich typ na wskazówce narzędzia. Na przykład: najechanie na plik ldc.i4.3 spowoduje: Nie wiem, która wersja obsługuje to, ale jest w najnowszej wersji (V5.10), ale sądzę, że jest również obsługiwana w poprzedniej wersji (V4) –

Powiązane problemy