ILSpy 5.0
New Language Features
- C# 8.0: Nullable Reference Types
- C# 7.3:
unmanaged
generic constraint - C# 7.3 Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned.
- Use Unsafe intrinsics to represent IL operations that cannot be expressed in C#.
- C# 7.0 Generalized async return types
- C# 7.0 Local functions (#1586)
- C# 7.0 Throw expressions (#1600)
New Features
- Decompile a set of assemblies to a solution (#1550 by @dymanoid)
- New BAML Decompiler
- MSIX for Microsoft Store: @onovotny added build support (including Azure Pipelines).
- Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent
- Added new
RemoveDeadStores
option. - Added new
AlwaysShowEnumMemberValues
option.
Decompiler Engine Improvements & Bugfixes
- Improved stability of decompiler and disassembler on invalid metadata tokens.
- Improved decompilation in case not all types/references are available.
- Added switch-on-string pattern for empty string case.
- Add support for
ReadOnlySpan<T>
initialization pattern - Improved decompilation of
ref readonly
delegates and return types. -
- Improved decompilation of
ref
typed expressions, in particularref
/in
extension methods andin
parameters.
- Improved decompilation of
- Improved support for Mono
yield return
state machines and closure types. - Improved decompilation of LINQ queries
- PDB generator now can emit "method stepping information" for async #1422
Improvements & Bugfixes
- Many minor bug and stability fixes.
- Improved performance in ILInlining step
- VSIX: Fix issue of missing dependencies
UI Improvements
- Avoid blocking the UI when waiting on assembly load while restoring the saved position in the treeview
- Support obfuscated names in treeview and search #1359
- Escape non-printable characters in IL view
- Rework C# decompiler options dialog (unify language settings panel)
- Make indentation of decompiled code configurable.
- Chinese translation by @maikebing (#1299) screenshots
- Small improvements in search panel by @mcpiroman (#1476)
- Show error message if an entity cannot be analyzed instead of crashing.
- Improved linking in the decompiler view:
- method group / delegate references
- the constructor of an attribute is reachable, by clicking on the open/close parenthesis.
- fixed fields are now properly linked
- Added matching bracket highlighting
- Updated to AvalonEdit 6.0 Preview
dotnet ilspycmd
Tool
- Add -d|-debuginfo option See Demo app
- Add -r|-referencepath option
Architectural Changes
- We dropped support for all TFMs except netstandard2.0 #1416
- Reactivate many tests from old decompiler
Known issues & limitations
- C# 8.0 nullable reference types metadata only supports the latest format. Note that this is a breaking change and assemblies generated by older preview versions of C# 8 are not supported. (See #1619 (comment))
- Generic local functions are not yet supported (#1588)
- "Open assembly from GAC" may require administrator privileges (#1498)
- Matching bracket highlighting does not yet support all language features that introduce new syntax.