New Language Features
- C# 7.0 pattern matching
- C# 8.0 stackalloc in nested contexts
- C# 9.0 skip locals init
- C# 9 covariant returns
- C# 10 file-scoped
namespace
declarations - C# 10
abstract static
interface members - Updated pattern detection for Roslyn 4.0
- Updated pattern detection for Mono C# compiler 5.x
- Updates pattern detection for Roslyn 3.11
Contributions
- Introduce MSI-based installer (by @Rpinski in #2558)
- ILSpyCmd: Added support for single-file bundles (by @Freakness109 in #2499)
- Support loading compressed Xamarin assemblies (by @cpraehaus in #2471)
- BAML decompiler: Add missing
x:Static
(by @wwh1004 and @bert2 in #2536) - Various improvements in pattern detection for records (by @yyjdelete in #2476)
- Add TypeDefinitionDocuments to custom debug information data (by @davidwengier in #2578)
- Fix
MainWindow.OpenLink
for net6.0 (by @yyjdelete in #2585) - Fix loading icons embedded as resources (by @AustinWise in #2595)
- Use Trace.Listeners instead of Debug.Listeners (by @yyjdelete in #2555)
- Updated ReadyToRun. (by @cshung in #2489)
- Analyzers: Return valid modules only (by @zvirja in #2496)
- Extensibility: Make SearchTermMatches virtual (by @beaverden in #2494)
- Fix null check in
BamlDecompilerTypeSystem.HasType
(by @yyjdelete in #2509) - Updated Chinese translation (by @Nyerst in #2606)
Enhancements
- Assembly resolver: GetReferenceAssemblyPath now picks closest available version
- #1175: Added
inassembly:
andinnamespace:
search predicates - #2298: Allow to change the DecompilerTextView's font size through scrolling.
- #2404: Cache decompilation results when switching tabs
- Better support for voice commands/keyboard navigation
- Proper support for long paths in Windows 10 in
WholeProjectDecompiler
. - #2608: Support for submenu items
- Added hyperlinks to metadata explorer tables
- Add simple public API for
XamlDecompiler
- Improved performance of LoadedAssembly.GetTargetFrameworkId, LoadedAssembly.GetRuntimePackAsync and others
- #2368: Dim namespaces containing only
internal
types - Improved window menu
- Added "Copy results" menu item to Analyzer
- #2550 and #2551: Fix tab and focus handling
- #2330: Added an option to toggle namespace sub-directory support in project export
- Added ETW instrumentation to the decompiler for performance measurements
- Added
DecompilerTypeSystem.CreateAsync
to allow asynchronous initialization - #2522: Support backticks in fully-qualified names when searching for type
- #2520: The matched pairs are hardly visible in the dark theme
- Add "Extract package entry" context menu entry for binaries inside bundles/packages
- IL disassembly: Option to show raw offsets and instruction bytes
- IL disassembly: Show header sizes
Bug fixes
- Dirkster99/AvalonDock#324 Navigator window a11y fixes
- #2579: Use "ILSpyInstance" mutex to wait until the first ILSpy instance is ready to receive
WM_COPYDATA
- #2615: Overflow check did not work reliably due to fp rounding error
- #2612: Decompilation of
newarr
withint.MaxValue
causes OOME - #2622: Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties
- #2533: Various bugfixes in pinned-region detection.
- #2547 and #2495: Improved decompilation of VB.NET decimal constants.
- #2544: Do not produce syntax errors with interpolated strings
- #2545: LINQ does not support null-forgiving operator, suppress transform.
- #2541: Add explicit unchecked() around non-constant cast of constant to
nint
- #2518: "Other resources" section in resource files was not properly displayed
- #2534: Handle default implementations of properties and events in interfaces
- #2458, #2459: Fixed various correctness issues in IL code generated by C++/CLI
- #2530: Stability fixes in pattern matching detection
- #2378: Stability fixes in deconstruction detection
- #2379: This fixes an issue where
return
statements within try-blocks could turn intogoto
statements - #2052: BAML-to-XAML: Resolve namespaces of properties
- #1858 and #2188: Improved decompilation of display-classes
- #2424: Suppress the string==null special-case within the string class itself
- #2092: aggressively inline code in compiler-generated lambdas and expression trees
- And many other fixes, for a full list click here
ilspycmd
- Removed .NET Core 2.1 TFM, added .NET 6.0 TFM
Visual Studio AddIn
- Allow to open ILSpy on project and package references
- We now have an addin for VS2022 https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy2022 that is separate from the legacy addin.