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
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.
- Pull request #4232scalony 11 października 2026
- Pull request #4133scalony 19 września 2026
Remove the delegate cache left by a discarded method-group conversion
github.com/icsharpcode/ILSpy/pull/4133 - Pull request #4134scalony 15 września 2026
Recognize a VB exception filter's type test
github.com/icsharpcode/ILSpy/pull/4134
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ę.
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.
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ł.
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.
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.
Czytaj dalej
Więcej o tej pracy i o pozostałych projektach z naszymi zmianami.
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ę.