VulCode

ILSpy: nasze zmiany w projekcie open source

Dekompilator .NET: zamienia skompilowane biblioteki z powrotem w czytelny kod C#.

Język
C#
Gwiazdki na GitHubie
26 543
3przyjęte zmiany
Od 15.09.2026 do 11.10.2026.
3. miejsce wśród 64 projektów na GitHubie z naszymi zmianami, według gwiazdek. Pierwszy jest Zed (91 587).

Zmiany przyjęte w ILSpy

Dekompilator nie zostawia pola pamięci podręcznej delegata po odrzuconej konwersji grupy metod i rozpoznaje test typu w filtrze wyjątków z Visual Basica.

Jak sprawdziliśmy zmianę #4133

Doszedł zestaw przypadków testowych Issue3965 z dziewięcioma scenariuszami: pojedyncza odrzucona konwersja, konwersja przed użyciem i po użyciu tej samej metody, kilka konwersji pod rząd, dwie do tej samej metody, konwersja w warunku i w pętli. Każdy ma zapisany oczekiwany wynik, z którym test porównuje dekompilację.

C# i .NET

Nasze projekty w tej technologii, ich ekrany i to, kiedy ją wybieramy.

Błąd, poprawka i wniosek

Skrót naszego opisu z Nowinek technicznych: co nie działało, co zmieniliśmy i co z tego wynika dla naszej pracy.

Co nie działało

Dekompilacja zostawiała pole pamięci delegata

Przy _ = (Action<int>)M; delegat powstaje i jest od razu odrzucany, więc pole pamięci nie jest odczytywane. Wzorzec nie pasował, w wyniku zostawało pole <>O.<0>__M i kod się nie kompilował.

Co zmieniliśmy

Utworzenie delegata zamiast sprawdzenia pamięci

Gdy pole pamięci nie ma żadnego odczytu, sprawdzenie zastępuje utworzenie delegata, które zabezpieczało. W wyniku jest new Action<int>(M);, kod, który się kompiluje i robi to samo.

Czego nas to nauczyło

Dekompilator musi rozpoznać wzorce, które generuje kompilator, inaczej zostawia w kodzie śmieci po optymalizacjach.

Każda poprawka wymagała przeczytania, co dokładnie emituje kompilator C# i VB.

Inne projekty z naszymi zmianami: C# i .NET

7 projektów w tej technologii ma nasze przyjęte zmiany. Pasek to gwiazdki repozytorium, obok liczba naszych zmian. Każdy wiersz prowadzi do strony projektu.

Pytania o nasze zmiany w ILSpy

Skąd są te zmiany, kto je przyjął i czy poprawimy coś w Twojej bibliotece.

Używasz ILSpy w swoim projekcie?

Jeśli coś w nim nie działa, poprawimy to u źródła i zostawimy obejście do czasu wydania. Odpiszemy w godzinę.