Releases: icsharpcode/ILSpy
Releases · icsharpcode/ILSpy
ILSpy 7.2 Preview 4
Note: ILSpy_binaries_7.2.0.6841-preview4_Fix_zhCN_Start.zip is a quick fix for #2623 - please use when experiencing start crashes on a Chinese system.
New Language Features
- C# 8.0: stackalloc in nested contexts
Contributions
- Add TypeDefinitionDocuments to custom debug information data (by @davidwengier in #2578)
- Fix
MainWindow.OpenLinkfor net6.0 (by @yyjdelete in #2585) - Fix loading icons embedded as resources. (by @AustinWise in #2595)
- Updated Chinese translation. (by @nyerst in #2606)
Enhancements
- Updated AvalonEdit and other Nuget packages
- Added hyperlinks to metadata explorer tables
- Assembly resolver: GetReferenceAssemblyPath now picks closest available version
- Improved performance of LoadedAssembly.GetTargetFrameworkId, LoadedAssembly.GetRuntimePackAsync and others
- #2368: Dim namespaces containing only
internaltypes - Improved window menu
- #2608: Support for submenu items
- Added "Copy results" menu item to Analyzer
Bug 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
newarrwithint.MaxValuecauses OOME. - #2622: Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties.
- And many other fixes, for a full list click here.
ILSpy 7.2 Preview 3
New Language Features
- Updated pattern detection for Roslyn 4.0
- Updated pattern detection for Mono C# compiler 5.x
- C# 10 file-scoped
namespacedeclarations - C# 10
abstract staticinterface members
Contributions
- Use Trace.Listeners instead of Debug.Listeners (by @yyjdelete in #2555)
- Introduce MSI-based installer (by @Rpinski in #2558)
ilspycmd
- Removed .NET Core 2.1 TFM, added .NET 6.0 TFM
Enhancements
- #2404: Cache decompilation results when switching tabs.
- #2550 and #2551: Fix tab and focus handling.
- #2330: Added an option to toggle namespace sub-directory support in project export.
- #1175: Added
inassembly:andinnamespace:search predicates
Bug fixes
- #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 - And many other fixes, for a full list click here.
ILSpy 7.2 Preview 2
New Language Features
- C# 9.0 skip locals init
Contributions
- Various improvements in pattern detection for records (by @yyjdelete in #2476)
- ILSpyCmd: Added support for single-file bundles (by @Freakness109 in #2499)
- BAML decompiler: Add missing
x:Static(by @wwh1004 and @bert2 in #2536)
Visual Studio AddIn
- We now have an addin for VS2022 https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy2022 that is separate from the legacy addin. If you had ILSpy installed in a preview version of VS2022, please uninstall the old version and install this new one.
Enhancements
- Added ETW instrumentation to the decompiler for performance measurements.
- Added
DecompilerTypeSystem.CreateAsyncto 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
- #2298: Allow to change the DecompilerTextView's font size through scrolling.
Bug fixes
- #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
- And many other fixes, for a full list click here.
ILSpy 7.2 Preview 1
New Language Features
- Adjusted pattern detection for Roslyn 3.11
- C# 7.0 pattern matching
- C# 9 covariant returns
Contributions
- Updated ReadyToRun. (by @cshung in #2489)
- Analyzers: Return valid modules only. (by @zvirja in #2496)
- Extensibility: Make SearchTermMatches virtual. (by @beaverden in #2494)
- Support loading compressed Xamarin assemblies. (by @cpraehaus in #2471)
- Fix null check in
BamlDecompilerTypeSystem.HasType(by @yyjdelete in #2509)
Visual Studio AddIn
- Allow to open ILSpy on project and package references
Enhancements
- Add "Extract package entry" context menu entry for binaries inside bundles/packages.
- Better support for voice commands/keyboard navigation.
- Proper support for long paths in Windows 10 in
WholeProjectDecompiler. - IL disassembly: Option to show raw offsets and instruction bytes.
- IL disassembly: Show header sizes.
- Add simple public API for
XamlDecompiler
Bug fixes
- #2379: This fixes an issue where
returnstatements within try-blocks could turn intogotostatements. - #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.
ILSpy 7.1
General
- Adjusted pattern detection for Roslyn 3.10
Cross-platform support
- Fix #2417: ilspycmd is crashing if no valid ICU package is found.
- Fix DotNetCorePathFinder on Unix systems: realpath always returned garbage
- Fix #2358: use current Path.DirectorySeparatorChar instead of hard-coded backslashes.
Contributions
- Support for .NET 6 single-file bundles. (by @vitek-karas in #2373)
- Added .vsconfig. (by @joshuacookdev in #2376)
- Chinese translation updates. (by @maikebing in #2385)
- Fix #2406: for readonly property with only getter, move readonly to property instead of getter (by @yyjdelete in #2408)
- #2409: Styling of windows title bar is now optional. (by @tom-englert in #2412)
- 6a34df5: small bug fix in the metadata explorer UI by @marwie
- Fixed a source generation bug in ReflectionDisassembler: Identifiers containing multiple consecutive dots were not properly escaped. (#2386 by @DarkOoze)
Bug fixes
- #2392: Avoid some redundant casts with the ?: operator.
- #2398: TranslateCondition: truncate condition value if necessary
- #2391: mark method as unsafe when passing null to a parameter of pointer type.
- #2396: Extend the #1903 workaround to unconstrained generic types.
- #2389: missing extern keyword for properties and events.
- #2395: Do not use for->foreach transform if collection is not an array.
- #2390: Add support for generic object initializers.
- #2390: Make sure all unused captured variables are removed even in lambdas.
- #2407: Operator '-' cannot be applied to operand of type 'nuint'
- #2354: decompilation of unary and binary operators with nullable value types.
- And many other fixes, for a full list click here.
ILSpy 7.0
New Language Features
- C# 9.0: record classes
- C# 9.0: with expressions
- C# 9.0: primary constructors
- Support for .NET 5 custom calling conventions
- Improved support for Unsafe-intrinsics
UI Improvements
- Dark mode (@tom-englert in #2347)
- .NET bundles and Nuget packages are now directly embedded in the tree view
- Search enabled in NuGet packages
- Added setting highlight the current line in the code view (see #2224, by @DickvdBrink)
- Simple UI language switching support
General
- Support for .NET bundles (see #2191)
- Detect use of csc /deterministic switch
- Improve assembly resolver API to allow async usage
- #2286: Enable server-mode GC in ILSpy
- Building ILSpy for .NET 5 is now possible (see multitargeting.props.template)
- Improved project/solution decompilation (see #2186, by @wwh1004)
- Updated ReadyToRun (see #2238 & #2279, by @cshung)
- Added inline display of CustomDebugInformation table entries in metadata
- Add metadata tree nodes for blob, guid, string and user string heap
- Performance improvements in DataGrid filter (by @tom-englert)
- Adjust fitness calculation for destructors (by @MikeFH in #2344)
- Refactored insertion of search results (by @MikeFH in #2335)
- Align dependencies with Roslyn 3.8.0, see #2173 (affects ICSharpCode.Decompiler NuGet package users)
- Removed the dependency on Humanizer (see #2232 and #2235)
Bug fixes
- Fix #2192: Add support for VB.NET delegate construction
- Fix #2195: foreach loop conversion accidentally removes end container labels
- Fix #2197: .NET 5 RC2: "Analyze/Used By" throws BadImageFormatException
- Fix #2196: Add support for extern local functions.
- Fix #1079: CSharpFormattingOptions.AutoPropertyFormatting has no effect
- Fix #2222: switch-expression does not support implicit conversions.
- #2241: Fix possible NRE in TypeProvider.GetTypeFromReference
- Fix #2233: ResourcesFileTreeNode no longer creates child nodes for BAML files
- Fix #2230: do not emit directly consecutive null propagation operators
- Fix #603: Single element arrays should not span multiple lines
- Fixed crash when loading DLLs with invalid sections in their
.deps.json(see #2227, by @bernd5) - #2278: Implement support for CSharpBinderFlags.InvokeSimpleName
- #2280: Add additional checks to GenerateVariableName
- #2275: Fix exception when assembly does not contain proper MetadataVersion.
- #2260: Fix switch(string) transform: handle empty cases where the C# compiler optimizes out the
if - #2288: Fix decompilation of nullable lifting in expression trees (by @wwh1004)
- PDBGen: Ignore duplicated ILFunctions (see 5a8b488)
- #2314: ILSpy incorrectly resolves a runtime dependency when dll is present in both WindowsDesktop.App and NETCore.App
- #1648 and #2133: Use simple assembly names for KnownThings to allow the resolver to use the relative framework version
- #2349: Use proper ExpressionType with DynamicCompoundAssign.
- #1512: XmlDocumentationProvider Unable to load some XML files to have special characters
- #2342: Do not generate empty names for foreach loop variables.
- #2340: Do not traverse assemblies with load errors in AssemblyList.GetAllAssemblies()
- #2356: Can't navigate if switch language in Analyze panel
- Improved decompilation of rethrow/throw and finally blocks in async methods. (see #1749, #2339 and #2353)
ILSpy 7.0 RC2
- Simple UI language switching support
- Bug fixes
ILSpy 7.0 RC1
General
- Dark mode! (big thank you to @tom-englert in #2347)
- Building ILSpy for .NET 5 is now possible (see multitargeting.props.template)
- Added inline display of CustomDebugInformation table entries in metadata
- Add metadata tree nodes for blob, guid, string and user string heap
Contributions
- Performance improvements in DataGrid filter (thanks to @tom-englert)
- Adjust fitness calculation for destructors (by @MikeFH in #2344)
- Refactored insertion of search results (by @MikeFH in #2335)
- Use correct URL format in Search MSDN command (by @yyjdelete in #2343)
- Warning fixes (by @riQQ in #2345)
- Fixed ConnectionIdRewritePass (by @wwh1004 in #2327)
Bug fixes
- PDBGen: Ignore duplicated ILFunctions (see 5a8b488)
- #2314: ILSpy incorrectly resolves a runtime dependency when dll is present in both WindowsDesktop.App and NETCore.App
- #1648 and #2133: Use simple assembly names for KnownThings to allow the resolver to use the relative framework version.
- #2349: Use proper ExpressionType with DynamicCompoundAssign.
- #1512: XmlDocumentationProvider Unable to load some XML files to have special characters
- #2342: Do not generate empty names for foreach loop variables.
- #2340: Do not traverse assemblies with load errors in AssemblyList.GetAllAssemblies()
- #2356: Can't navigate if switch language in Analyze panel.
- Improved decompilation of rethrow/throw and finally blocks in async methods. (see #1749, #2339 and #2353)
- And many other fixes, for a full list click here.
ILSpy 7.0 Preview 3
General
- Detect use of csc /deterministic switch
- Update Ready2Run (see #2279 by @cshung)
- #2286: Enable server-mode GC in ILSpy
- Improve assembly resolver API to allow async usage
UI Improvements
- Search enabled in NuGet packages
- Enable theming for message boxes (see #2276 by @AustinWise)
Bug fixes
- #2278: Implement support for CSharpBinderFlags.InvokeSimpleName
- #2280: Add additional checks to GenerateVariableName
- #2275: Fix exception when assembly does not contain proper MetadataVersion.
- #2260: Fix switch(string) transform: handle empty cases where the C# compiler optimizes out the
if - #2288: Fix decompilation of nullable lifting in expression trees (by @wwh1004)
- And many other fixes, for a full list click here.
ILSpy 7.0 Preview 2
New Language Features
- C# 9.0: record classes
- C# 9.0: with expressions
- C# 9.0: primary constructors
General
- Removed the dependency on Humanizer (see #2232 and #2235)
- Updated ReadyToRun (see #2238, by @cshung)
UI Improvements
- Added setting highlight the current line in the code view (see #2224, by @DickvdBrink)
- Fix #2205: About page should always be opened in a new tab.
Bug fixes
- Fix #1079: CSharpFormattingOptions.AutoPropertyFormatting has no effect
- Fix #2222: switch-expression does not support implicit conversions.
- #2241: Fix possible NRE in TypeProvider.GetTypeFromReference
- Fix #2233: ResourcesFileTreeNode no longer creates child nodes for BAML files
- Fix #2230: do not emit directly consecutive null propagation operators.
- Fix #603: Single element arrays should not span multiple lines
- Fixed crash when loading DLLs with invalid sections in their
.deps.json(see #2227, by @bernd5) - And many other fixes, for a full list click here.