http://open-source-security-software.net/project/ILSpy/releases.atom Recent releases for ILSpy 2024-11-15T21:39:46.454363+00:00 python-feedgen ILSpy 2.2 ILSpy 2.2 2014-06-29T13:15:25+00:00 - #345: Added option to allow folding on all braces - #345: Added context menu to code view with folding commands - #384: Show all images contained in .ico resource - #423: Decompiling as a Visual Studio project now creates AssemblyInfo file - #467: Added option to display metadata tokens in tree - Fixed lots of decompilation bugs 2014-06-29T13:15:25+00:00 ILSpy 2.3 ILSpy 2.3 2015-03-09T16:16:58+00:00 - UI improvements - improved search: regex support, support for specifying the type of the search directly in the textbox (t: for type, m: for member and c: for constant) - "Used by" analyzer node on types - #542: ILSpy truncates browsing history when switching language modes - Show version of assemblies next to caption in tree node - Adapt size of ResourceStringTable/ResourceObjectTable on changed size of MainWindow.mainPane. - Display assembly information as tooltip on Assembly tree nodes - BAML decompiler fixes - #515: Correctly qualify types in nested {x:Static} extensions - #470: BAML to XAML conversion does not generate escape sequence {} correctly - IL decompiler fixes: - improved recognition of lock statements - improvements in pointer arithmetic decompilation - reduce nesting of if-else-if-statements - #537: ILSpy can't find any Overridden By methods - #524: Mistake ILSpy decompile: delegate instantiation should only be removed if an implicit conversion exists. - ILSpy Visual Studio AddIn 1.1: - #528: Open Build Output in ILSpy - #504: Collapse group in Visual Studio context menu - Improved extensibility for Reflexil (#523) 2015-03-09T16:16:58+00:00 ILSpy v0.69 ILSpy v0.69 2015-04-21T18:08:06+00:00 1. Add "weed volume -port.public=xxx" option for read only access. 2. Change from "publicIp" to free-text "publicUrl". 3. Change master if master leader changes. 4. Correctly handle .tar.gz file uploads, avoiding auto unzip. 5. Avoid wrong way to handle write failure for replicated writes, which could lead to volume .dat file format error. 6. Support in-memory/leveldb/boltdb mode tuning for memory/performance balance. 7. Started basic admin ui. 8. Add option for filer to disable directory listing. 2015-04-21T18:08:06+00:00 ILSpy 2.3.1 ILSpy 2.3.1 2015-07-13T04:12:22+00:00 - Bug fixes - Decompiler NuGet package 2015-07-13T04:12:22+00:00 ILSpy v2.3.2 ILSpy v2.3.2 2016-04-09T14:36:02+00:00 - Bug fixes 2016-04-09T14:36:02+00:00 ILSpy v2.4 ILSpy v2.4 2016-06-05T16:01:55+00:00 Fixes, Changes and Features are listed in the [milestone 2.4 issues](https://github.com/icsharpcode/ILSpy/issues?q=milestone%3A2.4+is%3Aclosed) 2016-06-05T16:01:55+00:00 ILSpy 0.76 ILSpy 0.76 2017-05-28T17:42:29+00:00 2017-05-28T17:42:29+00:00 ILSpy 3.0-Preview1 ILSpy 3.0-Preview1 2017-09-19T09:00:58+00:00 This is a preview release! Framework requirements: .NET 4.6.1 or higher. Language support status can be found in [issue #829](https://github.com/icsharpcode/ILSpy/issues/829), please note that this is a live issue and might have changed after this preview has been published. Notable missing feature compared to older versions: nullables. (only fully implemented features have a checkmark in the status issue). Before opening an issue ("X doesn't decompile correctly") please go check with [issue #829](https://github.com/icsharpcode/ILSpy/issues/829)! New: support for .NET Standard and .NET Core assemblies. Missing: decompile to VB. Contributions welcome because we concentrate solely on C#. Architectural changes are documented in the [wiki](https://github.com/icsharpcode/ILSpy/wiki/newdecompiler) (Note: roadmap not up to date as of this release). Important points to note (design goals): the decompiler should always create semantically correct and compilable code. 2017-09-19T09:00:58+00:00 ILSpy 3.0-Preview2 ILSpy 3.0-Preview2 2017-10-03T11:46:09+00:00 What's new compared to Preview 1? * (Partial) support for nullables, foreach, using * New: Open assembly from Nuget package * A *lot* of small-ish fixes * The VSIX is here! And it supports output from netstandard and netcore projects. * The -alpha4 Nuget package corresponds to this release. 2017-10-03T11:46:09+00:00 ILSpy v3.0-beta1 ILSpy v3.0-beta1 2017-10-23T05:01:25+00:00 What is new compared to Preview 2? * switch statement decompilation * "IL with C#" view * Fixes to object initializers, catch, await and more Nuget package -beta1 is corresponding to this release 2017-10-23T05:01:25+00:00 ILSpy v3.0-beta2a ILSpy v3.0-beta2a 2017-11-06T10:56:17+00:00 The following are major changes that happenend in this release cycle: * Improve handling of post-increment and compound assignments * Add foreach over array pattern * Pointer arithmetic * Many correctness and bug fixes * NuGet package includes debug symbols and source code https://github.com/icsharpcode/ILSpy/issues/943#issuecomment-339914287 * Frontends.sln: the x-plat console and PowerShell cmdlets projects use the NuGet package. For sample usage of the PowerShell cmdlets please see https://github.com/icsharpcode/ILSpy/blob/master/ICSharpCode.Decompiler.PowerShell/Demo.ps1. Note: works on Windows PowerShell and PowerShell Core. * Xamarin Workbook with additional snippet-like samples https://github.com/icsharpcode/ILSpy/blob/master/DecompilerNuGetDemos.workbook (sample output can be seen in https://github.com/icsharpcode/ILSpy/issues/964#issuecomment-341440702). Please use Frontends.sln as well as this workbook to guide your first steps in using the Decompiler NuGet package. 2017-11-06T10:56:17+00:00 ILSpy v3.0-beta3 ILSpy v3.0-beta3 2017-11-27T18:22:44+00:00 Final Beta, feature complete! * Expression tree support (last language feature) * Nupkg drag & drop (contributed, thanks!) * Support for retargetable assemblies * Correctness improvements, bug fixes * UI optimizations (loading speed) 2017-11-27T18:22:44+00:00 ILSpy v3.0-beta4 ILSpy v3.0-beta4 2017-12-04T14:53:37+00:00 This release is currently without VSIX (broken). Changes since Beta 3: * NewtonSoft JSON replaced by LightJson (traded NuGet for code inclusion) * Cecil is referenced via NuGet (instead of submodule which is kept, see https://github.com/icsharpcode/ILSpy/pull/1001) * ICSharpCode.Decompiler targets net46 instead of net461 (netstandard2.0 targetting unchanged) * Fix --type option in ICSharpCode.Decompiler.Console * Fix x-plat bugs in DotNetCore/DotNetCorePathFinder 2017-12-04T14:53:37+00:00 ILSpy v3.0 ILSpy v3.0 2017-12-18T05:54:28+00:00 [Release notes](https://github.com/icsharpcode/ILSpy/wiki/ILSpy-3.0-Release-Notes) are available in the Wiki. If you want the "good old" ILSpy, please download ILSpy_binaries_Net46_Win_3.0.0.3447.zip - this is the tried-and-true Windows WPF UI. NuGet: https://www.nuget.org/packages/ICSharpCode.Decompiler/ Visual Studio addin: https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy Console info: https://github.com/icsharpcode/ILSpy/tree/master/ICSharpCode.Decompiler.Console PowerShell cmdlets info: https://github.com/icsharpcode/ILSpy/tree/master/ICSharpCode.Decompiler.PowerShell 2017-12-18T05:54:28+00:00 ILSpy v3.0.1 ILSpy v3.0.1 2017-12-21T13:52:46+00:00 This is a bugfix release for the WPF UI only (NuGet and xplat clients not updated, use 3.0.0 instead) 2017-12-21T13:52:46+00:00 ILSpy 3.0.2 ILSpy 3.0.2 2018-01-24T06:16:44+00:00 The release 3.0.2 has two improvements for downstream consumers of ICS.Decompiler: * TFM net45 support, see https://github.com/icsharpcode/ILSpy/pull/1033 * Decompiling types without method bodies, see https://github.com/icsharpcode/ILSpy/issues/1032 For 3.0.1, there was only one improvement: GetCecil visibility, see https://github.com/icsharpcode/ILSpy/issues/1028 Binaries are on NuGet. 2018-01-24T06:16:44+00:00 ILSpy v3.1-beta1 ILSpy v3.1-beta1 2018-03-12T18:57:19+00:00 # New Language Features * C# 7.2 private protected ([contributed](https://github.com/icsharpcode/ILSpy/pull/1010)) * C# 7.2 conditional ref * C# 7.1 async Main ([contributed](https://github.com/icsharpcode/ILSpy/pull/1029)) * C# 7.0 out variables * C# 7.0 ref returns and locals * C# 6.0 string interpolation * C# 6.0 await in catch / finally * C# 6.0 expression-bodied members * C# 6.0 null propagator (null-conditional operator, succinct null checking) # Improved Mono mcs Codegen (following areas) * switch * lock * foreach # Test Infrastructure Improvements * Support for mcs * Support for vbc # Misc * UI: Switch to VS MEF ([contributed](https://github.com/icsharpcode/ILSpy/pull/1058)) * General/UI: Language version selection * VSIX: drop VS 2015 support 2018-03-12T18:57:19+00:00 ILSpy v3.1-rc ILSpy v3.1-rc 2018-03-28T08:18:49+00:00 # Fixes for mcs * LINQ * Delegate construction # Misc * Updated pattern detection for changes in Roslyn 2.7 * Refactored ILSpy.AddIn # Improvements in TypeSystem * Lazy-loading for nested types (needs testing) * Add metadata tokens to type system * Remove dead code # Bug Fixes for Roslyn * https://github.com/dotnet/roslyn/issues/25251 (Decompilation should simplify "type" usage) * https://github.com/dotnet/roslyn/issues/25246 (Decompilation cannot decompile xUnit's `Assert.All`) * https://github.com/icsharpcode/ILSpy/issues/1095 (C# decompilation, for flags enums always use hex prefix) 2018-03-28T08:18:49+00:00 ILSpy v3.1-final ILSpy v3.1-final 2018-04-08T14:24:59+00:00 Standalone decompiler can be downloaded directly here, the [VS2017 addin](https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy) and [decompiler NuGet](https://www.nuget.org/packages/ICSharpCode.Decompiler/) are available at the respective locations. # New Language Features * C# 7.2 private protected ([contributed](https://github.com/icsharpcode/ILSpy/pull/1010)) * C# 7.2 conditional ref * C# 7.1 async Main ([contributed](https://github.com/icsharpcode/ILSpy/pull/1029)) * C# 7.0 out variables * C# 7.0 ref returns and locals * C# 6.0 string interpolation * C# 6.0 await in catch / finally * C# 6.0 expression-bodied members * C# 6.0 null propagator (null-conditional operator, succinct null checking) # Improved Mono mcs Codegen (following areas) * switch * lock * foreach * LINQ * Delegate construction # Test Infrastructure Improvements * Support for mcs * Support for vbc # Improvements in TypeSystem * Lazy-loading for nested types * Add metadata tokens to type system * Remove dead code # Misc * UI: Switch to VS MEF ([contributed](https://github.com/icsharpcode/ILSpy/pull/1058)) * General/UI: Language version selection * VSIX: drop VS 2015 support * Updated pattern detection for changes in Roslyn 2.7 * Refactored ILSpy.AddIn # Bug Fixes for Roslyn * https://github.com/dotnet/roslyn/issues/25251 (Decompilation should simplify "type" usage) * https://github.com/dotnet/roslyn/issues/25246 (Decompilation cannot decompile xUnit's `Assert.All`) * https://github.com/icsharpcode/ILSpy/issues/1095 (C# decompilation, for flags enums always use hex prefix) 2018-04-08T14:24:59+00:00 ILSpy 0.77 ILSpy 0.77 2018-05-13T07:51:51+00:00 accumulated changes since last 12 months. The next release will default to a new filer implementation with more POSIX-like features. Current filer users may want to remember this version in case the upgrade is not so smooth. 2018-05-13T07:51:51+00:00 ILSpy v3.2-beta ILSpy v3.2-beta 2018-06-11T05:25:14+00:00 The Visual Studio addin beta is only available here, not on the marketplace - it has been completely rewritten, please test the "Open in ILSpy" feature extensively (works on project explorer nodes such as references and Nuget packages as well as inside the text editor). # New Language Features * C# 4.0 Dynamic binding * C# 4.0 Named arguments * C# 7.0 Tuple types * C# 7.3 Attributes on backing fields of properties # Improved Pattern Detection * C# 1.x switch-on-string * Compound assignments for user-defined operators # Improvements in TypeSystem * Distinguish between unkown type and no type. * Dead code removal # Misc * Rewrite of ILSpy.AddIn * Search results now use a ListView with two columns, search results can be sorted by clicking on the header. * Updated pattern detection for changes in Roslyn 2.8 * Upgrade to Mono.Cecil 0.10.0 * Various smaller bug fixes and stability improvements 2018-06-11T05:25:14+00:00 ILSpy 0.90 ILSpy 0.90 2018-06-24T01:44:13+00:00 fixed an important bug: during compaction, there could be some deletion. In old version, there would be some error and the compaction always fails. This version handles the deletion well. 2018-06-24T01:44:13+00:00 ILSpy v3.2-rc ILSpy v3.2-rc 2018-06-24T13:52:26+00:00 For major new features in 3.2, please see the Beta announcement https://github.com/icsharpcode/ILSpy/releases/tag/v3.2-beta. Here we list only the changes from Beta -> RC. # Contributions - Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones https://github.com/icsharpcode/ILSpy/pull/1176 ) - Search engine partial name match (special thanks to @TheOneAmir https://github.com/icsharpcode/ILSpy/pull/1119 ) # Improvements & Bugfixes - Improved stability of ILSpy.AddIn - Avoid ambiguities when referring to Attribute types in attribute context - Improved decompilation of Windows Forms assemblies - Improved code generation when using generic methods (emit fewer casts, if possible) - Support for extension 'Add' methods in collection initializers (forgotten C# 6.0 feature) - Improved decompilation of collection initializers - Use overload resolution to ensure we call the correct indexer accessor methods - Streamlined decompilation of enum value declarations - ... as well as other minor fixes 2018-06-24T13:52:26+00:00 ILSpy v3.2.0 ILSpy v3.2.0 2018-07-01T13:13:17+00:00 # Security Advisory [Resource Deserialization Security Vulnerability](https://github.com/icsharpcode/ILSpy/issues/1196) If you are using an older version, please update immediately! (especially if the assemblies you decompile are untrustworthy). Note that the integration in Visual Studio via Roslyn is __not__ affected. --- The Visual Studio addin is now available on the [marketplace](https://marketplace.visualstudio.com/items?itemName=SharpDevelopTeam.ILSpy), the Decompiler engine as usual via NuGet. # New Language Features * C# 4.0 Dynamic binding * C# 4.0 Named arguments * C# 7.0 Tuple types * C# 7.3 Attributes on backing fields of properties # Improved Pattern Detection * C# 1.x switch-on-string * Compound assignments for user-defined operators * Improved decompilation of collection initializers # Improvements in TypeSystem * Distinguish between unkown type and no type. * Dead code removal # Misc * Rewrite of ILSpy.AddIn * Improved decompilation of Windows Forms assemblies * Search results now use a ListView with two columns, search results can be sorted by clicking on the header. * Updated pattern detection for changes in Roslyn 2.8 * Improved control-flow decompilation of conditional statements (special thanks to @Chicken-Bones https://github.com/icsharpcode/ILSpy/pull/1176 ) * Upgrade to Mono.Cecil 0.10.0 2018-07-01T13:13:17+00:00 ILSpy 0.91 ILSpy 0.91 2018-07-23T09:16:27+00:00 1. faster loading volumes with boltdb or leveldb needle map 2. heartbeat to detect disconnected volume servers 3. filer add dir list size limit 4. mount a filer folder to a local folder 5. "weed mount" now supports changing attributes, e.g., chown, chmod 6. add "weed s3" to support Amazon S3 API, with basic PUT/GET/HEAD/DELETE bucket, PUT/GET/HEAD/DELETE objects 2018-07-23T09:16:27+00:00 ILSpy v4.0-alpha1 ILSpy v4.0-alpha1 2018-07-23T15:30:09+00:00 Technical details for this first release of ILSpy 4.0 are available in a dedicated page in our wiki: [SRM](https://github.com/icsharpcode/ILSpy/wiki/srm) deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect. Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage." Therefore we ask you to compare the last released production version with this Alpha 1 - we are confident that even at this early stage we match the quality in decompilation. If not, please do open an issue (sample assemblies very much appreciated!) 2018-07-23T15:30:09+00:00 ILSpy 0.92 ILSpy 0.92 2018-07-24T09:09:27+00:00 Fix possible nil bug merged from a pull request. Last release for version2 volume storage. Switching to version3 volume storage in next release. 2018-07-24T09:09:27+00:00 ILSpy v4.0-beta1 ILSpy v4.0-beta1 2018-08-01T19:45:09+00:00 We want to thank all contributors, who provided fixes in this release: @Chicken-Bones, @ashmind and @cshung! And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3 and @tamlin-mike for their ongoing support! # New Language Features * C# 1.0/2.0 overloaded &&/|| operators * C# 4.0 optional arguments * C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly * C# 7.2 non-trailing named arguments # Improved Pattern Detection * C# 6.0 string interpolation with FormattableString/IFormattable # Misc * Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#) * New IAnalyzer API * Added IDocumentationProvider: allows providing XML doc comments from custom sources * Added IDebugInfoProvider: allows providing debug info (variable names and sequence points) # Contributions * Chicken-Bones: Improved block ordering in ConditionDetection (#1218) * ashmind: Decimal constant improvements (#1236) * cshung: Bug fix for #1224 (#1243) # Improvements & Bugfixes * Decompilation of invalid IL * Improved decompilation of C++/CLI constructs * Improved stability of analyzers # Architectural Changes For ILSpy 4 we replace Mono.Cecil with System.Reflection.Metadata. The [wiki entry on SRM](https://github.com/icsharpcode/ILSpy/wiki/srm) deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect. Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage." 2018-08-01T19:45:09+00:00 ILSpy v4.0-beta2 ILSpy v4.0-beta2 2018-08-13T11:05:29+00:00 Beta 1 Release Notes apply to Beta 2, additionally: # Improved Pattern Detection * Expression Trees: Multiple levels of nesting are now supported better # Misc * CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0 * IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience * "Open containing folder" and "Open command line here" added to Assembly tree nodes. # Improvements & Bugfixes * Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions. 2018-08-13T11:05:29+00:00 ILSpy 0.93 ILSpy 0.93 2018-08-20T04:56:47+00:00 1. add back recursively delete a folder 2. speed up leveldb bolddb loading 3. fix problem with master submit error "multipart handled by ParseMultipartForm". 4. default to v3 volume format 5. add master client to listen for volume location updates 6. add 128 bit needle id. see https://github.com/chrislusf/seaweedfs/wiki/Optimization#customize-needle-id-to-128-bit 7. add filer notification on change events 8. assert master server count is odd 9. add redis cluster store for filer 10. filer UI add upload and drop & drop 11. add "weed scaffold" command to generate configuration files 2018-08-20T04:56:47+00:00 ILSpy 0.94 ILSpy 0.94 2018-08-23T07:06:16+00:00 * Fix bug when starting with old filer.toml * Add filer.export to copy meta data between different stores. * Fix bug with filer on Redis 2018-08-23T07:06:16+00:00 ILSpy 0.95 ILSpy 0.95 2018-09-04T03:58:21+00:00 * Fix a possible data racing problem. * Fix weed s3 upload file support for S3 v4 API. AWS S3 Multipart upload is still working in progress. 2018-09-04T03:58:21+00:00 ILSpy 0.96 ILSpy 0.96 2018-09-07T21:46:00+00:00 * fix large file copying error with "weed mount" * fix file copying permission setting 2018-09-07T21:46:00+00:00 ILSpy 0.97 ILSpy 0.97 2018-09-28T04:53:24+00:00 * weed s3 * Add Amazon S3 Multipart Upload APIs * Fix bug with buckets when redirecting reads to volume server. * weed mount * Fix bug when write intervals are not continuous * Default directory list limit to a large number 100K * Default replication to empty, so filer can decide the replication. * Fix "du" on linux. * Fix reading empty file on linux. * weed filer * Default directory list limit to a large number 100K * weed filer.replicate * Add this feature to asynchronously replicate from one filer to anther filer * weed volume * when leveldb or boltdb is used, remove old indexes when committing the compaction. * other commands * Fix "weed backup" error when rerunning 2018-09-28T04:53:24+00:00 ILSpy 0.98 ILSpy 0.98 2018-10-12T08:47:07+00:00 * Filer * Filer replicates to Amazon S3, Google Cloud Storage, Azure. * Increase filer directory operation concurrency, by skipping an unnecessary deduplication error. * minor * Embed images, javascripts into servers, avoid external http resources. * Fix profiling bug. * Fix UI issue when filer is empty. 2018-10-12T08:47:07+00:00 ILSpy 0.99 ILSpy 0.99 2018-10-14T07:32:51+00:00 * weed mount * Drastically improve file IO performance * weed volume * Added gRpc port, which is volume port(default to 8080) + 10000, default to 18080 * use gRpc to replace batch delete http API "/delete" * weed master * use gRpc to replace batch volume id lookup http API "/vol/lookup" 2018-10-14T07:32:51+00:00 ILSpy 1.00 ILSpy 1.00 2018-11-05T06:34:04+00:00 * Volume Server * Fix vacuum problem on windows * Filer * Configuration separate into filer.toml and notification.toml * Replicate * Support bootstrapping to replicate existing files * Support BackBlaze B2 * Support message queue AWS SQS, Google Pub/Sub 2018-11-05T06:34:04+00:00 ILSpy 1.09 ILSpy 1.09 2018-11-22T00:42:50+00:00 * weed mount * avoid memory leak for FUSE * improved performance * avoid possible file handle conflicts * much improved "ls -al" performance with O(1) metadata fetching * fix corrupted file with missing sections when out-of-order writes on Linux https://github.com/chrislusf/seaweedfs/issues/774 * weed s3 * fix get object error 2018-11-22T00:42:50+00:00 ILSpy 1.10 ILSpy 1.10 2018-11-29T17:15:30+00:00 * statically build executables, https://github.com/chrislusf/seaweedfs/issues/775 * weed master * "/submit" handler add "count" parameter to allocate multiple file ids * weed volume * default "-images.fix.orientation" to false * weed filer * avoid a directory and a file with the same name overwriting each other https://github.com/chrislusf/seaweedfs/issues/777 * weed mount * add support for "df" to display free disk space 2018-11-29T17:15:30+00:00 ILSpy 1.11 ILSpy 1.11 2018-12-08T08:40:19+00:00 * Add Hadoop Compatible File System! Run your hadoop jobs on SeaweedFS! https://github.com/chrislusf/seaweedfs/wiki/Hadoop-Compatible-File-System * weed filer * default to leveldb store in current directory if no filer.yaml defined * weed mount * use gzip to transmit data if possible 2018-12-08T08:40:19+00:00 ILSpy v4.0-beta3 ILSpy v4.0-beta3 2018-12-16T08:10:39+00:00 We want to thank all contributors, who provided fixes in this release: @Chicken-Bones, @Viridovics, @kmatyaszek, @vizv and @agametov! And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3, @tamlin-mike and @CreateAndInject for their ongoing support! Beta 1+2 Release Notes apply, additionally: # New Language Features * C# 7.3 stackalloc initializers * C# 7.2 stackalloc with Span<T> # Improved Pattern Detection * Decompilation of integer literals (#1322) * Variable splitting works better with method calls (#1253) # Contributions * Chicken-Bones: Improved switch and loop detection (#1258, #1295 and #1296) * Viridovics: Add cast to object for reference types in ExpressionBuilder.VisitUnboxAny (#1277) * kmatyaszek: Add show IL code to ICSharpCode.Decompiler.Console (#1285) * vizv: Fix yield return for assembly compiled with Mono (#1303) * agametov: CWE-252 The return value of function 'Reverse' is required to be utilized. (#1305) # Improvements & Bugfixes * Attribute analyzer now works with built-in attributes * Bugfixes in ILSpy VS AddIn * Improved stability of analyzers * Various smaller bugfixes # Architectural Changes https://github.com/icsharpcode/ILSpy/wiki/srm 2018-12-16T08:10:39+00:00 ILSpy 1.14 ILSpy 1.14 2018-12-17T18:04:58+00:00 * weed filer * paginate through large folders * weed volume * reduce needle map memory usage by 25% * weed mount * paginate through list results https://github.com/chrislusf/seaweedfs/issues/787 * paginate when "rm" and "mv" * Java * Hadoop compatible file system 1.03 * fix bug on mkdirs * Seaweed-client 1.03 * adding more functions, refactored from seaweed-hadoop-client * paginate through large folders 2018-12-17T18:04:58+00:00 ILSpy 1.15 ILSpy 1.15 2018-12-23T20:55:05+00:00 A Christmas Release! Happy Holidays! * weed filer, volume, HCFS * report original file size * Hadoop client (HCFS) * fix #793 first-level directory creation * fix #797 list directory * weed volume * enhance on detecting gzippable content * avoid ".gz" auto decompression * fix #793 clean up ".idx" files * weed backup * pull changes via gRpc streaming * fix problem with compact map iterating 2018-12-23T20:55:05+00:00 ILSpy 1.16 ILSpy 1.16 2018-12-28T23:14:38+00:00 * weed mount * support soft links * Performance improvements * weed filer.copy * limit to copying to a folder 2018-12-28T23:14:38+00:00 ILSpy 1.18 ILSpy 1.18 2018-12-30T08:53:33+00:00 * weed mount * keep mount point existing permissions fix https://github.com/chrislusf/seaweedfs/issues/806 * reduce memory footprint by switching to https://github.com/seaweedfs/fuse , related to https://github.com/chrislusf/seaweedfs/issues/805 * improve performance by caching, 60% faster in 32 threads mode, ~ 400% faster in single thread mode. 2018-12-30T08:53:33+00:00 ILSpy v4.0-rc1 ILSpy v4.0-rc1 2019-01-05T09:43:14+00:00 We want to thank all contributors who provided fixes in this release: @ninjaoxygen, @wangzq and @siriak! And we want to thank all testers, who provided feedback and tested very thoroughly, especially @greenozon, @mmusu3 and @tamlin-mike for their ongoing support! Beta 1 through 3 Release Notes apply, additionally: --- # Improved Pattern Detection * Decompilation and pretty-printing of float literals (#517 -> #1350) * Object and array initializer improvements * Various smaller improvements in correctness and prettiness of the decompiled code. # Contributions * ninjaoxygen: Update UniversalAssemblyResolver to include missing .NET 3.x [Compact Framework] support (#1347) * wangzq: Add command line argument "/config:" to specify settings file (#1360) * siriak: Code cleanup (#1363) # Improvements & Bugfixes * Added option to display all members, including compiler-generated members and getters/setters in tree view. (#747) * Added option to display metadata token in 10-based or hex format. (#628) * Reorganized option pages. (#1130) * Various smaller bugfixes 2019-01-05T09:43:14+00:00 ILSpy v4.0-rc2 ILSpy v4.0-rc2 2019-01-13T10:36:18+00:00 Only bug fixes in comparison to RC1. Prior feature release notes apply. 2019-01-13T10:36:18+00:00 ILSpy v4.0 ILSpy v4.0 2019-01-16T17:29:07+00:00 We want to thank all contributors who provided fixes (details see below)! And we want to thank all testers, who provided feedback and tested very thoroughly! # New Language Features * C# 1.0/2.0 overloaded &&/|| operators * C# 4.0 optional arguments * C# 7.1 reference assemblies: ILSpy will show a warning if you are looking at a reference assembly * C# 7.2 non-trailing named arguments * C# 7.2 stackalloc with Span<T> * C# 7.3 stackalloc initializers # Improved Pattern Detection * Decompilation and pretty-printing of float literals (#517 -> #1350) * Object and array initializer improvements * Various smaller improvements in correctness and prettiness of the decompiled code. * Decompilation of integer literals (#1322) * Variable splitting works better with method calls (#1253) * Expression Trees: Multiple levels of nesting are now supported better * C# 6.0 string interpolation with FormattableString/IFormattable # Contributions ## Decompilation engine * Chicken-Bones: Improved block ordering in ConditionDetection (#1218) * Chicken-Bones: Improved switch and loop detection (#1258, #1295 and #1296) * ashmind: Decimal constant improvements (#1236) * Viridovics: Add cast to object for reference types in ExpressionBuilder.VisitUnboxAny (#1277) * vizv: Fix yield return for assembly compiled with Mono (#1303) * cshung: Bug fix for #1224 (#1243) ## Others * ninjaoxygen: Update UniversalAssemblyResolver to include missing .NET 3.x [Compact Framework] support (#1347) * wangzq: Add command line argument "/config:" to specify settings file (#1360) * kmatyaszek: Add show IL code to ICSharpCode.Decompiler.Console (#1285) * agametov: CWE-252 The return value of function 'Reverse' is required to be utilized. (#1305) * siriak: Code cleanup (#1363) # Improvements & Bugfixes * Added option to display all members, including compiler-generated members and getters/setters in tree view. (#747) * Added option to display metadata token in 10-based or hex format. (#628) * Reorganized option pages. (#1130) * Local functions: Code is no longer hidden if local functions are used in the code, as long as they're not decompled correctly. Note that this might still lead to compile errors, if anonymous types or lambdas are used in the local functions. * Decompilation of invalid IL * Improved decompilation of C++/CLI constructs * Improved stability of analyzers * Various smaller bugfixes # Misc * CreateCecilObjectModel: extension method to help plugin writers porting their plugins to ILSpy 4.0 * IAmbience API revived: If you want to nicely print type names or member signatures in C# style, you can now use CSharpAmbience * "Open containing folder" and "Open command line here" added to Assembly tree nodes. * Experimental PDBgen (no lambda support, no yield/async state machines; very basic C#) * New IAnalyzer API * Added IDocumentationProvider: allows providing XML doc comments from custom sources * Added IDebugInfoProvider: allows providing debug info (variable names and sequence points) # Architectural Changes For ILSpy 4 we replaced Mono.Cecil with System.Reflection.Metadata. The [wiki entry on SRM](https://github.com/icsharpcode/ILSpy/wiki/srm) deals at length with information that is important to addin writers, the background story and some of the performance/memory improvements you as a user of ILSpy can expect. Our goal for this version given the underlying architectual changes is as follows: "As good or better as ILSpy 3.2 in terms of decompilation quality, stability, performance and memory usage." 2019-01-16T17:29:07+00:00 ILSpy 1.23 ILSpy 1.23 2019-01-18T22:29:18+00:00 * weed mount * misc performance and memory usage improvements * weed s3 * fix list buckets * fix s3cmd put * weed volume * read waits when volume is committing compaction * fix volume writes error introduced from 1.19 27093bc * weed master * Speed up heartbeat to new master leader 41fe31b * Change to separate gRpc port due to https://github.com/soheilhy/cmux/issues/64 * weed filer * support TTL with Cassandra and Redis filer store 2019-01-18T22:29:18+00:00 ILSpy v4.0.1 ILSpy v4.0.1 2019-01-25T13:54:11+00:00 This is a hotfix release. Two UI-related changes have been incorporated: * ILSpy: Restore 3.x default value of "Show internal types and members" setting * ILSpy.AddIn: Include BAML decompiler plugin in VSIX distribution 2019-01-25T13:54:11+00:00 ILSpy 1.24 ILSpy 1.24 2019-01-26T06:19:03+00:00 * weed mount * set file attributes, fix #847 * weed volume * report 404 for deleted files with memory needle map, fix #850 2019-01-26T06:19:03+00:00 ILSpy v5.0-preview1 ILSpy v5.0-preview1 2019-03-10T16:59:18+00:00 # New Language Features * C# 8.0: Nullable Reference Types * C# 7.3: `unmanaged` generic constraint # Improvements & Bugfixes * PDB generator now can emit "method stepping information" for async https://github.com/icsharpcode/ILSpy/issues/1422 * Generate VS Windows Forms Designer-compliant code if a method is identified as Windows Forms InitializeComponent * Add support for ReadOnlySpan<T> initialization pattern * Improved decompilation of LINQ queries * Improved performance in ILInlining step * New BAML Decompiler # 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 https://github.com/icsharpcode/ILSpy/issues/1359 * Escape non-printable characters in IL view * Reactivate SearchMsdnContextMenuEntry # dotnet `ilspycmd` Tool * Add -d|-debuginfo option [See Demo app](https://github.com/christophwille/ilspycmd-pdbgen-demo) * Add -r|-referencepath option # Architectural Changes * We dropped support for all TFMs except netstandard2.0 https://github.com/icsharpcode/ILSpy/issues/1416 * Reactivate many tests from old decompiler 2019-03-10T16:59:18+00:00 ILSpy v5.0-preview2 ILSpy v5.0-preview2 2019-05-12T05:42:42+00:00 # New Language Features * C# 7.3 Indexing movable fixed buffers: Fixed buffers can be indexed into without first being pinned. * Use [Unsafe](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il) intrinsics to represent IL operations that cannot be expressed in C#. # Improvements & Bugfixes * Improved decompilation of `ref readonly` delegates and return types. * Improved linking and display of fixed fields in the decompiler view. * Improved support for C# 8.0 nullable reference types: `dynamic?` * Many minor bug and stability fixes. # UI Improvements * Rework C# decompiler options dialog (unify language settings panel) * Make indentation of decompiled code configurable. * Chinese translation by @maikebing (#1299) [screenshots](https://github.com/icsharpcode/ILSpy/pull/1510#issuecomment-489441810) * Small improvements in search panel by @mcpiroman (#1476) * Show error message if an entity cannot be analyzed instead of crashing. 2019-05-12T05:42:42+00:00 ILSpy v5.0-preview3 ILSpy v5.0-preview3 2019-07-08T11:49:45+00:00 This preview does not include any new language features. # Improvements & Bugfixes * VSIX: Fix issue of missing dependencies * MSIX support: @onovotny added build support (including [Azure Pipelines](https://icsharpcode.visualstudio.com/icsharpcode-pipelines/_build/latest?definitionId=1&branchName=master)). Not published in the store yet, see #1540 * Tests updated to latest Roslyn implementation * Many minor bug and stability fixes ([details](https://github.com/icsharpcode/ILSpy/compare/v5.0-preview2...v5.0-preview3)) 2019-07-08T11:49:45+00:00 ILSpy v5.0-preview4 ILSpy v5.0-preview4 2019-08-12T07:02:32+00:00 # New Language Features * C# 7.0 [Local functions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/local-functions.md) (#1586) * C# 7.0 [Throw expressions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/throw-expression.md) (#1600) # New Features * Decompile a set of assemblies to a solution (#1550 by @dymanoid) # Improvements & Bugfixes * C# 8.0 nullable reference types metadata was updated to the [latest format](https://github.com/dotnet/roslyn/blob/master/docs/features/nullable-metadata.md). *Note* that this is a *breaking change* and assemblies generated by older preview versions of C# 8 are no longer supported. * Improved decompilation of `ref` typed expressions, in particular `ref`/`in` extension methods and `in` parameters. * Improved support for Mono `yield return` state machines and closure types. * Improved stability of decompiler and disassembler on invalid metadata tokens. * Many minor bug and stability fixes. For a complete list of all changes since preview3 see [here](https://github.com/icsharpcode/ILSpy/compare/v5.0-preview3...v5.0-preview4). # UI Improvements * Improved linking in the decompiler view: * method group / delegate references * the constructor of an attribute is reachable, by clicking on the open/close parenthesis. * Added matching bracket highlighting * Updated to AvalonEdit [6.0 Preview](https://www.nuget.org/packages/AvalonEdit/6.0.0-preview1) # Known issues & limitations * C# 8.0 nullable reference types metadata was updated to the [latest format](https://github.com/dotnet/roslyn/blob/master/docs/features/nullable-metadata.md). *Note* that this is a *breaking change* and assemblies generated by older preview versions of C# 8 are no longer supported. (See https://github.com/icsharpcode/ILSpy/issues/1619#issuecomment-518421085) * 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. 2019-08-12T07:02:32+00:00 ILSpy v5.0-rc1 ILSpy v5.0-rc1 2019-09-09T07:14:25+00:00 # New Language Features * C# 7.0 [Generalized async return types](https://github.com/dotnet/roslyn/blob/master/docs/features/task-types.md) # Improvements & Bugfixes * Added new `RemoveDeadStores` option. * Added switch-on-string pattern for empty string case. * Improved decompilation in case not all types/references are available. * Many minor bug and stability fixes. 2019-09-09T07:14:25+00:00 ILSpy v5.0 ILSpy v5.0 2019-09-19T17:03:01+00:00 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](https://github.com/dotnet/corefx/blob/master/src/System.Runtime.CompilerServices.Unsafe/src/System.Runtime.CompilerServices.Unsafe.il) intrinsics to represent IL operations that cannot be expressed in C#. * C# 7.0 [Generalized async return types](https://github.com/dotnet/roslyn/blob/master/docs/features/task-types.md) * C# 7.0 [Local functions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/local-functions.md) (#1586) * C# 7.0 [Throw expressions](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-7.0/throw-expression.md) (#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](https://icsharpcode.visualstudio.com/icsharpcode-pipelines/_build/latest?definitionId=1&branchName=master)). * 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 particular `ref`/`in` extension methods and `in` parameters. * 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 https://github.com/icsharpcode/ILSpy/issues/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 https://github.com/icsharpcode/ILSpy/issues/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](https://github.com/icsharpcode/ILSpy/pull/1510#issuecomment-489441810) * 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](https://www.nuget.org/packages/AvalonEdit/6.0.0-preview1) # dotnet `ilspycmd` Tool * Add -d|-debuginfo option [See Demo app](https://github.com/christophwille/ilspycmd-pdbgen-demo) * Add -r|-referencepath option # Architectural Changes * We dropped support for all TFMs except netstandard2.0 https://github.com/icsharpcode/ILSpy/issues/1416 * Reactivate many tests from old decompiler # Known issues & limitations * C# 8.0 nullable reference types metadata only supports the [latest format](https://github.com/dotnet/roslyn/blob/master/docs/features/nullable-metadata.md). *Note* that this is a *breaking change* and assemblies generated by older preview versions of C# 8 are not supported. (See https://github.com/icsharpcode/ILSpy/issues/1619#issuecomment-518421085) * 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. 2019-09-19T17:03:01+00:00 ILSpy v5.0.1 ILSpy v5.0.1 2019-10-07T07:03:49+00:00 This is a bug fix release. * VSIX: Fixes for reference assemblies, type navigation * PDBgen: Fix for sequence points generation * Add support for null propagation on array access: `arr?[i]` * Additional smaller fixes and improvements 2019-10-07T07:03:49+00:00 ILSpy v5.0.2 ILSpy v5.0.2 2019-11-02T16:59:16+00:00 This is a bug fix release. * Fix crash while resolving .NET core references * Respect language settings in display class transformation * Use specialized generic types if a specialized variable is captured * Stack overflow when decompiling a `bool` -> `bool?` conversion * `Expand using declarations` setting was not saved 2019-11-02T16:59:16+00:00 ILSpy v6.0-preview1 ILSpy v6.0-preview1 2019-12-02T13:22:29+00:00 # BREAKING CHANGES / IN DEVELOPMENT * The main new UI feature is a multi-tab docking interface. Please put it to the test and report bugs! * ILSpy 6.0 will require at least .NET 4.7.2 (v5.0 required .NET 4.6.2) # New Language Features * C# 8.0 [Default Interface Methods](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/default-interface-methods.md) * C# 8.0 [Async streams](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/async-streams.md) (currently not covering `await foreach`) * C# 8.0 await using * C# 8.0 [Readonly members](https://github.com/dotnet/csharplang/issues/1710) # New Features * Add search features (thanks to @miloush and @sailro) - resources (#1707) - assemblies (#1708) - namespaces (#1736) - Add assembly column to search pane (#1690) # Decompiler Engine Improvements & Bugfixes * Added struct constructor initializer pattern * DotNetCorePathFinder: Various bug fixes when working with .net core assemblies * Transform post-increment on float/double (#1769 thanks to @Chicken-Bones) * Fix extra minus sign when formatting -0 on .NET Core 3.0 (#1790 thanks to @Chicken-Bones) * Fix sealed modifier on interface methods with no body (#1792 thanks to @Chicken-Bones) * Fix NullReferenceException when foreach decompilation is turned off (#1754 thanks to @davidwengier) * Fixed performance problem when using an assembly from a `MemoryStream` (#1763 thanks to @yyjdelete) # UI Improvements * New icons (based on VS 2017 icon pack) (#1704 thanks to @Rpinski) * Use XAML for icons (high DPI) * Docking and multi tab support (see #1725 and #1801) * RichText Tooltips (#1654) * Folding for XAML output (thanks to @jogibear9988) # dotnet `ilspycmd` Tool * #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches 2019-12-02T13:22:29+00:00 ILSpy v6.0-preview2 ILSpy v6.0-preview2 2020-01-08T09:56:50+00:00 # UI Improvements * Ready2Run (by @cshung see https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun) * Metadata Explorer (see https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer) * Assembly list dropdown in toolbar, enhanced assembly list management * Add "Reset to defaults" in Options dialog # New Language Features * Support for generic and static local functions * C# 7.3 pattern-based `fixed` statement # Enhancements * Support VB `Select Case` on string * Analyzer follow type forwarders (#1846 by @yyjdelete) # Bug fixes * Display `System.Void` as `struct` (#1835 by @yyjdelete) * Properly decompile auto events with tuples * Do not change accessibility of non-transformed local functions * Improve drag&drop support (#1860) * Fix bug in `stackalloc` initializer detection involving `Span<decimal>` (see #1855 by @yyjdelete) * Fix DotNetCorePathFinder to properly support netstandard2.1 # dotnet `ilspycmd` Tool * New option: `usepdb` (for improved variable naming) * Breaking change: option `debuginfo` renamed to `genpdb` 2020-01-08T09:56:50+00:00 ILSpy v6.0-preview3 ILSpy v6.0-preview3 2020-04-18T08:25:00+00:00 An administrative note first: we re-licensed the last part that came from SharpDevelop - the tree view component. It happened more for consistency in the repository than any other reason. You can find the discussions at https://github.com/icsharpcode/ILSpy/issues/1904. # New Language Features * C# 7.0: Changes to syntactic disambiguation of generic identifiers # UI Improvements * Add "Open with ILSpy" entry to the Windows Explorer context menu on exe and dll files (via Options/Misc) * Added a "Debug Metadata Explorer" node for portable PDBs * Empty metadata tables can now be hidden from the tree view * "Select PDB" context menu: allows to change the PDB file resolved by ILSpy or pick one from a different location * Various stability fixes # Enhancements * ReadyToRun: Fix #1889 Indexing the methods * ReadyToRun: Avoid eager parsing (#1934 by @cshung) * Better decompilation of local functions, pinned regions and display-classes * Solution and project decompilation: Add missing ProjectTypeGuids # PDB generation * Improved generation of sequence points (#1967 by @jacdavis) * PDB generation: Use correct sequence points in LINQ expressions and many smallish bug fixes # Bug fixes * Fix multi-module support * Disassembler: actually make use of the cancellation token * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.0-preview2...v6.0-preview3). # ILSpy pwsh cmdlets * Show a progress bar during decompilation # Fixes and improvements for SharpLab * Do not run `ProxyCallReplacer` if async state machines are not transformed. * Do not show readonly modifier on structs, if the IsReadonlyAttribute is preserved. * Provide a setting to desugar X? into Nullable<X> for value types. 2020-04-18T08:25:00+00:00 ILSpy v6.0-preview4 ILSpy v6.0-preview4 2020-06-17T09:49:53+00:00 # New Language Features * C# 8.0: Indexing and Slices (Ranges) # New Features * *TEMPORARILY REMOVED* https://github.com/icsharpcode/ILSpy/issues/2013#issuecomment-634771497: Added the capability to extract self-contained executables (PublishSingleFile) * Project export: Added an option to allow SDK-style format for project files. (#2031 by @dymanoid) * Dynamic assembly list generation for target framework * Analyzers: Added "Implements interface"-Analyzer (#2028 by @dymanoid) # UI Improvements * Using the middle mouse button to click on tree nodes and links will open the decompilation result in a new tab. * IL/IL with C#/ReadyToRun: Add metadata token hyperlinks to type, field, property and event declarations. * IL/IL with C#/ReadyToRun: Add rich-text tooltips * Show target frameworks next to the assembly version in the tree-view # Enhancements * ReadyToRun: Using import cell name to describe callees (#1991 by @cshung) * ReadyToRun: Decorate the ready to run disassembly with DebugInfoBounds (#1987 by @cshung) * Improve ReduceNestingTransform by considering nested containers (#1880 by @Chicken-Bones) * The decompiler now supports Scalar Replacement Of Aggregates, which by default only works on display-classes and display-structs. There is an option to make it affect all instances and uses of plain types containing fields only. NOTE: It is still in preview stage. You can activate it when using a debug build. * Added support for null-propagation on unconstrained generic expressions * Added support for `[module: NullablePublicOnly]` * Enhanced assembly resolution to distinguish target frameworks and use the correct references in case there are multiple versions of framework assemblies loaded. * Updated links to MS Docs (#2030 by @AustinWise) * #1498: Remove Fusion API usage: Use standard file enumeration instead. This should enable us to use the GAC even with restricted access, as only the LIST permission is required. # PDB generation * Improved sequence points of try-catch statements # Bug fixes * Fix #1946: Don't move `return` into `try` block when doing so changes the semantics of a `finally` block. * Fix #1992: Analyzer fails to find usages of a type when it is used as a type argument * Workaround dotnet/roslyn#43659 in decompiled code. * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.0-preview3...v6.0-preview4). 2020-06-17T09:49:53+00:00 ILSpy v6.0-rc1 ILSpy v6.0-rc1 2020-06-29T15:01:41+00:00 # New Language Features * Decompile `calli` instructions using C# 9.0 function pointer syntax * Improved support for Unsafe intrinsics # Enhancements * ReadyToRun: Optional output of UnwindInfo (#2043 by @edkazcarlson) # Bug fixes * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.0-preview4...v6.0-rc1) 2020-06-29T15:01:41+00:00 ILSpy v6.0 ILSpy v6.0 2020-07-07T17:00:12+00:00 # Major Changes of Note * ILSpy 6.0 sports a multi-tab docking interface * ILSpy 6.0 comes with a new Metadata Explorer * ILSpy 6.0 has new icons for high-DPI support * ILSpy 6.0 requires at least .NET 4.7.2 (v5.0 required .NET 4.6.2) # New Language Features * C# 8.0: Indexing and Slices (Ranges) * C# 7.0: Changes to syntactic disambiguation of generic identifiers * C# 7.3 pattern-based `fixed` statement * C# 8.0 [Default Interface Methods](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/default-interface-methods.md) * C# 8.0 [Async streams](https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/async-streams.md) (currently not covering `await foreach`) * C# 8.0 await using * C# 8.0 [Readonly members](https://github.com/dotnet/csharplang/issues/1710) * Decompile `calli` instructions using C# 9.0 function pointer syntax * Improved support for Unsafe intrinsics * Support for generic and static local functions # UI Improvements * Docking and multi tab support (see #1725 and #1801) * Metadata Explorer (see https://github.com/icsharpcode/ILSpy/wiki/Metadata-Explorer) * Assembly list dropdown in toolbar, enhanced assembly list management * Show target frameworks next to the assembly version in the tree-view * Using the middle mouse button to click on tree nodes and links will open the decompilation result in a new tab. * "Select PDB" context menu: allows to change the PDB file resolved by ILSpy or pick one from a different location * Added a "Debug Metadata Explorer" node for portable PDBs * Use XAML for icons (high DPI) * New icons (based on VS 2017 icon pack) (#1704 thanks to @Rpinski) * RichText Tooltips (#1654) * Add "Open with ILSpy" entry to the Windows Explorer context menu on exe and dll files (via Options/Misc) * Empty metadata tables can now be hidden from the tree view * Folding for XAML output (thanks to @jogibear9988) * Add "Reset to defaults" in Options dialog * Dynamic assembly list generation for target framework # Improvements & Bugfixes * Project export: Added an option to allow SDK-style format for project files. (#2031 by @dymanoid) * Solution and project decompilation: Add missing ProjectTypeGuids * Add search features (thanks to @miloush and @sailro) * #1498: Remove Fusion API usage: Use standard file enumeration instead. This should enable us to use the GAC even with restricted access, as only the LIST permission is required. * Fix DotNetCorePathFinder to properly support netstandard2.1 * Fix multi-module support * Updated links to MS Docs (#2030 by @AustinWise) * Improve ReduceNestingTransform by considering nested containers (#1880 by @Chicken-Bones) * Analyzers: Added "Implements interface"-Analyzer (#2028 by @dymanoid) * Analyzer follow type forwarders (#1846 by @yyjdelete) * The decompiler now supports Scalar Replacement Of Aggregates, which by default only works on display-classes and display-structs. There is an option to make it affect all instances and uses of plain types containing fields only. NOTE: It is still in preview stage. You can activate it when using a debug build. * Added support for null-propagation on unconstrained generic expressions * Added support for `[module: NullablePublicOnly]` * Enhanced assembly resolution to distinguish target frameworks and use the correct references in case there are multiple versions of framework assemblies loaded. * Better decompilation of local functions, pinned regions and display-classes * Disassembler: actually make use of the cancellation token * Support VB `Select Case` on string * Display `System.Void` as `struct` (#1835 by @yyjdelete) * Properly decompile auto events with tuples * Do not change accessibility of non-transformed local functions * Improve drag&drop support (#1860) * Fix bug in `stackalloc` initializer detection involving `Span<decimal>` (see #1855 by @yyjdelete) * Added struct constructor initializer pattern * DotNetCorePathFinder: Various bug fixes when working with .net core assemblies * Transform post-increment on float/double (#1769 thanks to @Chicken-Bones) * Fix extra minus sign when formatting -0 on .NET Core 3.0 (#1790 thanks to @Chicken-Bones) * Fix sealed modifier on interface methods with no body (#1792 thanks to @Chicken-Bones) * Fix NullReferenceException when foreach decompilation is turned off (#1754 thanks to @davidwengier) * Fixed performance problem when using an assembly from a `MemoryStream` (#1763 thanks to @yyjdelete) # Ready2Run (R2R) * Ready2Run (by @cshung see https://github.com/icsharpcode/ILSpy/wiki/ILSpy.ReadyToRun) * IL/IL with C#/ReadyToRun: Add metadata token hyperlinks to type, field, property and event declarations. * IL/IL with C#/ReadyToRun: Add rich-text tooltips * ReadyToRun: Optional output of UnwindInfo (#2043 by @edkazcarlson) * ReadyToRun: Using import cell name to describe callees (#1991 by @cshung) * ReadyToRun: Decorate the ready to run disassembly with DebugInfoBounds (#1987 by @cshung) # PDB Generation * Improved sequence points of try-catch statements * Improved generation of sequence points (#1967 by @jacdavis) * PDB generation: Use correct sequence points in LINQ expressions and many smallish bug fixes # dotnet `ilspycmd` Tool * New option: `usepdb` (for improved variable naming) * Breaking change: option `debuginfo` renamed to `genpdb` * #1740: Add LanguageVersion, RemoveDeadCode and RemoveDeadStores switches # ILSpy pwsh cmdlets * Show a progress bar during decompilation 2020-07-07T17:00:12+00:00 ILSpy v6.1 ILSpy v6.1 2020-07-28T07:52:16+00:00 # New Language Features * C# 9.0: Native ints * C# 9.0: Attributes on local functions # General * ILSpy now uses System.Reflection.Metadata 1.8.1 # UI Improvements * Assembly List UX: double-click selects list and dismisses dialog * Base types treenode: Create a flat list of nodes containing all base types instead of just the direct base types # Bug fixes * Fix #2050: Ref local variable is inlined incorrectly, changing the exception behavior * Fix #1903: un-inline argument of unsupported `isinst` instructions. * Fix #2073: Ensure the startOffsetVar actually appears in the expected instruction, not somewhere else. * Fix #2068: ILSpy can't find referenced library even though it's open * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.0...v6.1). 2020-07-28T07:52:16+00:00 ILSpy v6.2-preview1 ILSpy v6.2-preview1 2020-08-31T07:47:44+00:00 # New Language Features * C# 7.0: Deconstruction * C# 8.0: `await foreach` * C# 8.0: Disposable `ref struct`s * C# 8.0: Enhanced `using` statements * C# 8.0: `switch` expressions * C# 9.0: `init` accessors * C# 9.0: Lambda parameter discards # General * Add an option to enable aggressive inlining of expressions. * Add an option to always qualify member references (by @Pathoschild, see #2114) * ReadyToRun: Variable tracking in output (by @edkazcarlson, see #2067) * ReadyToRun: Optimized debug info output (by @cshung, see #2113) * Work on unifying the code formatting (see #2128) # UI Improvements * Updated Chinese translation (by @maikebing, @Berrysoft, @yyjdelete, see #2066) * Fix #2107: Add ScrollViewer around DisplaySettingsPanel # Bug fixes * Fix #2086: Check that window belongs to ILSpy before sending it a WM_COPYDATA message. * Fix #2090: ignore mscorlib references without public key token, when trying to resolve mscorlib. This will automatically fallback to .NET 4.0's mscorlib.dll. * #1292: Fix some more problems with pinned locals. * Fix #1555: Eliminate value-type temporaries emitted by mcs on field reads. * Fix #2056: "remove branch into body" must be executed before the clone cleanup * Fix #2101: reset removeExtraLoad flag if keepAssignmentBefore is set; implement simple case-de-duplication: abort if there are any duplicate cases. * Fix #2100: 'value'-named auto property could not be recognized correctly. * Fix #1441: Decompose flags enum values starting from the value with the highest Hamming Weight (popcount). * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.1...v6.2). 2020-08-31T07:47:44+00:00 ILSpy v6.2-preview2 ILSpy v6.2-preview2 2020-09-18T05:25:13+00:00 # New Language Features * C# 9.0: function pointers (see #2150) * C# 9.0: foreach with GetEnumerator extension methods # General * Metadata: Improvements/fixes by @srutzky, see #2134, #2135, #2145, #2147 and #2153 * Improve performance of Metadata DataGridCell (see #2151) * Updated Chinese translation (see #2160) * Add option for `string.Concat` decompilation * Tests upgraded to Roslyn 3.8.0-3.final # Bug fixes * Fix #2129: be more flexible about the initialization order for the async state machine * Fix #2140: ILSpy 6.2p1 no longer respects "use discards" setting * Fix #2139: ArgumentOutOfRangeException for some xmldoc * Fix #2039: Code generated by VB's On Error Resume Next causes "unassigned variable" compile errors * Fix #2156: range syntax not being detected correctly in some cases * BAML decompiler: #2109 and #2106 2020-09-18T05:25:13+00:00 ILSpy v6.2 ILSpy v6.2 2020-09-24T13:55:33+00:00 # New Language Features * C# 7.0: Deconstruction * C# 8.0: `await foreach` * C# 8.0: Disposable `ref struct`s * C# 8.0: Enhanced `using` statements * C# 8.0: `switch` expressions * C# 9.0: `init` accessors * C# 9.0: function pointers (see #2150) * C# 9.0: foreach with GetEnumerator extension methods * C# 9.0: Lambda parameter discards # General * Add an option to enable aggressive inlining of expressions * Add option for `string.Concat` decompilation * Add an option to always qualify member references (by @Pathoschild, see #2114) * ReadyToRun: Variable tracking in output (by @edkazcarlson, see #2067) * ReadyToRun: Optimized debug info output (by @cshung, see #2113) * Work on unifying the code formatting (see #2128) * Tests upgraded to Roslyn 3.8.0-3.final # UI Improvements * Improve performance of Metadata DataGridCell (see #2151) * Fix #2107: Add ScrollViewer around DisplaySettingsPanel * Metadata: Improvements/fixes by @srutzky, see #2134, #2135, #2145, #2147 and #2153 * Updated Chinese translation # Bug fixes * Fix #2129: be more flexible about the initialization order for the async state machine * Fix #2140: ILSpy 6.2p1 no longer respects "use discards" setting * Fix #2139: ArgumentOutOfRangeException for some xmldoc * Fix #2039: Code generated by VB's On Error Resume Next causes "unassigned variable" compile errors * Fix #2156: range syntax not being detected correctly in some cases * BAML decompiler: #2109 and #2106 * Fix #2086: Check that window belongs to ILSpy before sending it a WM_COPYDATA message. * Fix #2090: ignore mscorlib references without public key token, when trying to resolve mscorlib. This will automatically fallback to .NET 4.0's mscorlib.dll. * #1292: Fix some more problems with pinned locals. * Fix #1555: Eliminate value-type temporaries emitted by mcs on field reads. * Fix #2056: "remove branch into body" must be executed before the clone cleanup * Fix #2101: reset removeExtraLoad flag if keepAssignmentBefore is set; implement simple case-de-duplication: abort if there are any duplicate cases. * Fix #2100: 'value'-named auto property could not be recognized correctly. * Fix #1441: Decompose flags enum values starting from the value with the highest Hamming Weight (popcount). 2020-09-24T13:55:33+00:00 ILSpy v6.2.1 ILSpy v6.2.1 2020-10-12T11:51:51+00:00 This is a bugfix release. * #2177: PDB Generation is confused by enhanced using statements * #2183: Incorrect version in binding redirect for AvalonEdit * #2174: Some compilers produce display class ctors with unused local variables * #2182: Do not inline switch value, in case variable is reused. * #2180: Restrict the `(uint?)-1` special case to casts to integer types. * #2185: Fix MemberIsHidden-check for local function display structs 2020-10-12T11:51:51+00:00 ILSpy v7.0-preview1 ILSpy v7.0-preview1 2020-11-16T15:39:23+00:00 Important note for consumers of our ICSharpCode.Decompiler NuGet package: we have aligned our dependencies with Roslyn 3.8.0, see #2173 # New Language Features * Add support for .NET 5 custom calling conventions. * Improved support for Unsafe-intrinsics # UI Improvements * .NET bundles and Nuget packages are now directly embedded in the tree view. # General * Improved project/solution decompilation (see #2186, by @wwh1004) * Support for .NET bundles (see #2191) * Supports code generated by Roslyn 3.8.0 # 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. * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v6.2.1...v7.0-preview1). 2020-11-16T15:39:23+00:00 ILSpy v7.0-preview2 ILSpy v7.0-preview2 2021-01-11T12:49:05+00:00 # 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](https://github.com/icsharpcode/ILSpy/compare/v7.0-preview1...v7.0-preview2). 2021-01-11T12:49:05+00:00 ILSpy v7.0-preview3 ILSpy v7.0-preview3 2021-02-28T19:55:15+00:00 # 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](https://github.com/icsharpcode/ILSpy/compare/v7.0-preview2...v7.0-preview3). 2021-02-28T19:55:15+00:00 ILSpy v7.0-rc1 ILSpy v7.0-rc1 2021-04-08T17:33:30+00:00 # General * Dark mode! (big thank you to @tom-englert in #2347) * Building ILSpy for .NET 5 is now possible (see [multitargeting.props.template](https://github.com/icsharpcode/ILSpy/blob/master/multitargeting.props.template#L3)) * 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](https://github.com/icsharpcode/ILSpy/compare/v7.0-preview3...v7.0-rc1). 2021-04-08T17:33:30+00:00 ILSpy v7.0-rc2 ILSpy v7.0-rc2 2021-04-18T17:17:02+00:00 * Simple UI language switching support * Bug fixes 2021-04-18T17:17:02+00:00 ILSpy v7.0 ILSpy v7.0 2021-04-28T16:33:03+00:00 # 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](https://github.com/icsharpcode/ILSpy/blob/master/multitargeting.props.template#L3)) * 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) 2021-04-28T16:33:03+00:00 ILSpy v7.1 ILSpy v7.1 2021-05-30T19:33:15+00:00 # 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) * 6a34df5cd0ebb65e6d416eedc3937a19e3af87bc: 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](https://github.com/icsharpcode/ILSpy/compare/v7.0...v7.1-preview1). 2021-05-30T19:33:15+00:00 ILSpy v7.2-preview1 ILSpy v7.2-preview1 2021-10-11T08:51:56+00:00 # 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 `return` statements within try-blocks could turn into `goto` 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](https://github.com/icsharpcode/ILSpy/compare/v7.1...v7.2-preview1). 2021-10-11T08:51:56+00:00 ILSpy v7.2-preview2 ILSpy v7.2-preview2 2021-11-08T06:16:22+00:00 # 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.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 * #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](https://github.com/icsharpcode/ILSpy/compare/v7.2-preview1...v7.2-preview2). 2021-11-08T06:16:22+00:00 ILSpy v7.2-preview3 ILSpy v7.2-preview3 2021-12-09T08:42:33+00:00 # New Language Features * Updated pattern detection for Roslyn 4.0 * Updated pattern detection for Mono C# compiler 5.x * C# 10 file-scoped `namespace` declarations * C# 10 `abstract static` interface 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:` and `innamespace:` 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](https://github.com/icsharpcode/ILSpy/compare/v7.2-preview2...v7.2-preview3). 2021-12-09T08:42:33+00:00 ILSpy v7.2-preview4 ILSpy v7.2-preview4 2022-02-07T06:46:47+00:00 **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.OpenLink` for 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 `internal` types * 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 `newarr` with `int.MaxValue` causes OOME. * #2622: Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties. * And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v7.2-preview3...v7.2-preview4). 2022-02-07T06:46:47+00:00 ILSpy v7.2-rc ILSpy v7.2-rc 2022-02-15T14:37:41+00:00 # Fixes * #2623 Failed to start in zh-Hans * https://github.com/Dirkster99/AvalonDock/pull/324 Navigator window a11y fixes 2022-02-15T14:37:41+00:00 ILSpy v7.2 ILSpy v7.2 2022-02-28T15:34:04+00:00 # 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:` and `innamespace:` 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 * https://github.com/Dirkster99/AvalonDock/pull/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` with `int.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 into `goto` 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](https://github.com/icsharpcode/ILSpy/compare/v7.1...v7.2) # 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. 2022-02-28T15:34:04+00:00 ILSpy v7.2.1 ILSpy v7.2.1 2022-04-04T18:32:12+00:00 # Enhancements * Improved handling of nullability annotations on types involved in implicit conversions. * Improved detection of pinned regions. # Bug fixes * #2640: Invalid implicit enum value for unordered items * #2646: Missing values for enums with skipped or duplicate items * #2664: Fix NRE in ScopeSearchToAssembly. * #2637: Add missing Microsoft.Win32.Registry dependency to nuspec.template * #2582: Assertion when using named arguments in a constrained call * #2654: Ignore custom attributes on parameter where SequenceNumber is out-of-range. * See full list of fixes [here](https://github.com/icsharpcode/ILSpy/compare/v7.2...v7.2.1). 2022-04-04T18:32:12+00:00 ILSpy v8.0-preview1 ILSpy v8.0-preview1 2022-04-20T10:14:46+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. This is true for: * the installer * the framework-dependent zip * the VSIXs Functionality is supposed to be unchanged and fully functional in this release compared to 7.2. If something works in 7.2 but not 8.0-preview1, please file a bug. # Breaking Changes * ILSpy 8.0 will target `net60-windows` (see #2642) and all plugins will have to be migrated to the new platform. * Note: The `ICSharpCode.Decompiler` engine and NuGet package will continue to target `netstandard2.0` * Platform-independent APIs will be moved to ICSharpCode.ILSpyX, currently that includes (but is not limited to): * LoadedAssembly and AssemblyList APIs * PdbProvider APIs * `LoadedAssembly.WaitUntilLoaded()` was removed, because it leads to bugs; use `await LoadedAssembly.GetLoadResultAsync()` instead * The MSIX project has been removed and the installer introduced in 7.x will take its place in the Microsoft Store going forward (at RC/RTM). # Contributions * `ilspycmd` received support for the "nested directories" option on project export. (see #2636 by @GreyXor) * `ilspycmd` support for generating a solution from multiple projects (based on code provided by @marwie in #2364) * Namespace nesting in ILSpy tree view (based on code provided by @ds5678 in #2667) * Fix the ordering of COM interface methods, properties, and events to appear in their originally defined order (see #2639 by @zhuman) # Enhancements * Performance optimization of analyzers (see #2643) # Bug fixes * #2634: target expressions of delegate references were not decompiled correctly * #2632: Make sure that changing the setting "ExpandMemberDefinitions" has an effect when refreshing a decompiled view. * #2629: Indentation of method-call chains. * #2653: ILSpy reports wrong visibility for overridden protected internal properties if located in another assembly. * #2610: Explicitly qualify members in TemplateBindings. * #2655: TranslateArrayInitializer crashes with out of order array init And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v7.2.1...v8.0-preview1). 2022-04-20T10:14:46+00:00 ILSpy v8.0-preview2 ILSpy v8.0-preview2 2022-07-30T10:16:41+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. # New Language Features * C# 11: ref fields * C# 10: record structs * C# 10: Support DefaultInterpolatedStringHandler * Updated pattern detection for Roslyn 4.3.0 * Output attributes on lambda expressions # Contributions * Allow user to provide ID when generating a PDB (see #2678 by @andrewcrawley) * Assume conventionally named unresolved method references are properties or events (see #2677 by @fowl2) * Add EnableWindowsTargeting propery to csprojs targeting net6.0-windows (see #2752 by @clin1234) * Reduce allocations in TransformArrayInitializers (see #2731 by @ElektroKill) * Fix allowed language versions in `ilspycmd` (see #2703 by @superstrom) * Fix crash target framework detection with C++/CLI (see #2698 by @kant2002) # Enhancements * #2684: Iteratively unhide compiler-generated code, if it is referenced by user-code * Use `Unsafe.SizeOf` when taking the size of a managed type * #2718: Move XAML files that have an x:Class declaration next to their C# counterparts when using WholeProjectDecompiler # Bug fixes * #2691: Do not use AssemblyDefintion.GetAssemblyName(). This fails in culture-invariant mode (ilspycmd) when trying to work with satellite assemblies, because System.Reflection.AssemblyName tries to retrieve CultureInfo of the assembly culture * #2733: Ignore bad metadata when trying to resolve ResolutionScope * #2741: CallBuilder produces invalid invocation target when disambiguating calls to protected methods And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.0-preview1...v8.0-preview2). 2022-07-30T10:16:41+00:00 ILSpy v8.0-preview3 ILSpy v8.0-preview3 2022-12-04T15:18:20+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2 or newer minor release](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. IMPORTANT: If you don't have the .NET Desktop Runtime installed, the .NET bootstrapper (a dialog popping up when you try to run ILSpy) will link you to the .NET Runtime which supports only console apps! Please follow the above link and download the Desktop Runtime. # New Language Features * C# 11: Required members * Updated pattern detection for Roslyn 4.4.0 # Contributions * Add option to always fully qualify type names with `global::` (see #2762 by @hexafluoride) * Refresh ready to run for .NET 7 (see #2774 by @cshung) * Fix #2736: ILSpy decides to fully qualify type name when it is not necessary (see #2789 by @ElektroKill) * Fix initialization of FakeProperty with setter (see #2792 by @exyi) * Add progress reporting to PortablePdbWriter (see #2802 by @andrewcrawley) * Include assembly name in decompiled code (see #2810 by @miloush) * Add `IEntityProcessor` to `ReflectionDisassembler` (see #2835 by @tom-englert) * Fix dynamic type index calculation in `ApplyAttributeTypeVisitor` (see #2840 by @ElektroKill) * Add support for another `using` pattern (see #2841 by @ElektroKill) * Fix debug assertion regarding using directives (see #2843 by @ElektroKill) * Add support for VB cached delegate initialization (see #2844 by @ElektroKill) * Add support for VB auto events (see #2845 by @ElektroKill) * Add support for lock statements within yield return state machines (see #2846 by @ElektroKill) * Add support for VB async state-machines (see #2853 by @ElektroKill) * Enable various passing ignored tests (see #2852 and #2854 by @ElektroKill) * Improve support for post-increment/decrement on pointers (see #2856 by @ElektroKill) # Enhancements * Various performance improvements in the type system and decompiler engine. (see #2766 and #2754) * Support native ints in "Combine bit.and into shift" transform * #2780: Show embedded resource size # Bug fixes * Fix #2759: Some characters cause rendering issues in the tree view causing ILSpy to freeze. Also ignore embedded resources with an invalid offset, treat them as having zero byte length. * Fix #2763: Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value. * PDB generation: Use row ID instead of token in AsyncDebugInfo blob. * Fix #2806: Do not use implicitly typed out variables, if argument and parameter types do not match exactly. * #2823: Introduce IType.GetDefinitionOrUnknown() to allow better detection of async state-machines involving unknown types. * Fix #2825: Missing whitespace after new() * Fix #2827: Allow users to enter search queries that match our prefixes. * `WholeProjectDecompiler`: Fix #2830: Can't decompile project with / in resource name on Windows * Fix #2831: Popup/Tooltip scaling on multi-monitor multi-DPI setups. * `WholeProjectDecompiler`: Fix #2850: Make sure that type names longer than 255 characters are handled correctly. And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.0-preview2...v8.0-preview3). 2022-12-04T15:18:20+00:00 ILSpy v8.0-preview4 ILSpy v8.0-preview4 2023-04-03T11:51:57+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. # Contributions * More themes - Light/Dark are the original ones, R# &amp; VS Code added (see #2906 and #2931 by @ltrzesniewski) * Improve selected text highlighting (see #2938 by @Konctantin) * Add support for record structs in CSharpAmbience (see #2911 by @ElektroKill) * Add support for Visual Basic Yield Return state machine decompilation (see #2874 by @ElektroKill) * Fix ResXResourceWriter support for MemoryStream resource element (see #2895 by @ElektroKill) * Use .interfaceimpl type syntax (see #2903 by @ltrzesniewski) * Fix empty parameter names in delegate declarations (see #2912 by @ElektroKill) * Support disassembling ReadyToRun binaries compiled using composite mode (see #2944 by @cshung) # Enhancements * Move Settings to ILSpyX (see #2869) * Move all code related to single instance logic to separate class (see #2871) # Bug fixes * Fix #2933: TwoLetterISOLanguageName is insufficient for loading localized documentation. * Fix #2915: inassembly search filter is case sensitive and automatically suggests the wrong term * Fix #2922: System.ArgumentOutOfRangeException when decompiling a function And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.0-preview3...v8.0-preview4). 2023-04-03T11:51:57+00:00 ILSpy v8.0-rc1 ILSpy v8.0-rc1 2023-05-14T16:08:51+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. # Contributions * PowerShell manifest (see #2976 by @jhoek) * Make return duplication in ControlFlowSimplification less aggressive (see #2972 by @ElektroKill) * Update Chinese translation (see #2970 by @Nyrest) * Show a dark title bar when a dark theme in ILSpy is selected (see #2948 by @tom-englert) * Consider constructor type when lifting decimal constants (see #2953 by @ElektroKill) * Add more theme colors (see #2952 by @ltrzesniewski) # Enhancements * R2R package refreshes # Bug fixes * Fix #2956: Prevent loading all ResourceDictionaries eagerly * Fix #2945: Do not treat arbitrary method references pointing to members of the current type definition as part of the method. Only do so for compiler-generated methods. * Fix #2888: Tuple syntax cannot be used in is-expressions, use underlying type instead. * Fix #2921: struct type definition contains duplicate default constructor. And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.0-preview4...v8.0-rc1). 2023-05-14T16:08:51+00:00 ILSpy v8.0 ILSpy v8.0 2023-05-21T10:16:15+00:00 ILSpy 8 is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2+](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. Note - none of the following lists are exhaustive except of course the first one: # New Language Features * C# 10: record structs * C# 11: Required members * C# 11: ref fields * C# 10: Support DefaultInterpolatedStringHandler * Output attributes on lambda expressions * Updated pattern detection for Roslyn 4.4.0 # Contributions * More themes - Light/Dark are the original ones, R# &amp; VS Code added (see #2906 and #2931 by @ltrzesniewski) * Improve selected text highlighting (see #2938 by @Konctantin) * Namespace nesting in ILSpy tree view (based on code provided by @ds5678 in #2667) * `ilspycmd` received support for the "nested directories" option on project export. (see #2636 by @GreyXor) * `ilspycmd` support for generating a solution from multiple projects (based on code provided by @marwie in #2364) * Fix the ordering of COM interface methods, properties, and events to appear in their originally defined order (see #2639 by @zhuman) * Allow user to provide ID when generating a PDB (see #2678 by @andrewcrawley) * Assume conventionally named unresolved method references are properties or events (see #2677 by @fowl2) * Add EnableWindowsTargeting propery to csprojs targeting net6.0-windows (see #2752 by @clin1234) * Reduce allocations in TransformArrayInitializers (see #2731 by @ElektroKill) * Fix crash target framework detection with C++/CLI (see #2698 by @kant2002) * Add option to always fully qualify type names with `global::` (see #2762 by @hexafluoride) * Fix #2736: ILSpy decides to fully qualify type name when it is not necessary (see #2789 by @ElektroKill) * Add progress reporting to PortablePdbWriter (see #2802 by @andrewcrawley) * Add `IEntityProcessor` to `ReflectionDisassembler` (see #2835 by @tom-englert) * Fix dynamic type index calculation in `ApplyAttributeTypeVisitor` (see #2840 by @ElektroKill) * Add support for another `using` pattern (see #2841 by @ElektroKill) * Fix debug assertion regarding using directives (see #2843 by @ElektroKill) * Add support for VB cached delegate initialization (see #2844 by @ElektroKill) * Add support for VB auto events (see #2845 by @ElektroKill) * Add support for lock statements within yield return state machines (see #2846 by @ElektroKill) * Add support for VB async state-machines (see #2853 by @ElektroKill) * Enable various passing ignored tests (see #2852 and #2854 by @ElektroKill) * Improve support for post-increment/decrement on pointers (see #2856 by @ElektroKill) * Add support for record structs in CSharpAmbience (see #2911 by @ElektroKill) * Add support for Visual Basic Yield Return state machine decompilation (see #2874 by @ElektroKill) * Fix ResXResourceWriter support for MemoryStream resource element (see #2895 by @ElektroKill) * Use .interfaceimpl type syntax (see #2903 by @ltrzesniewski) * Fix empty parameter names in delegate declarations (see #2912 by @ElektroKill) * Support disassembling ReadyToRun binaries compiled using composite mode (see #2944 by @cshung) * Make return duplication in ControlFlowSimplification less aggressive (see #2972 by @ElektroKill) * Show a dark title bar when a dark theme in ILSpy is selected (see #2948 by @tom-englert) * Consider constructor type when lifting decimal constants (see #2953 by @ElektroKill) * Extend EliminateRedundantTryFinally in ReduceNestingTransform (see #2959 by @ElektroKill) # Enhancements * Move Settings to ILSpyX (see #2869). Additionally, many platform-independent APIs have been moved to ICSharpCode.ILSpyX since Preview1. ILSpyX is published as a standalone [NuGet package](https://www.nuget.org/packages/ICSharpCode.ILSpyX/) for others to reuse. * Performance optimization of analyzers (see #2643) * Various performance improvements in the type system and decompiler engine. (see #2766 and #2754) * #2684: Iteratively unhide compiler-generated code, if it is referenced by user-code * Support native ints in "Combine bit.and into shift" transform * #2780: Show embedded resource size * Use `Unsafe.SizeOf` when taking the size of a managed type # Bug fixes Please see the release notes for Preview1 to RC1 for details or, for a full list of changes click [here](https://github.com/icsharpcode/ILSpy/compare/v7.2.1...v8.0). 2023-05-21T10:16:15+00:00 ILSpy v8.1 ILSpy v8.1 2023-08-03T07:10:45+00:00 ILSpy 8.x is based on .NET 6.0 compared to .NET Framework 4.7.2 for the previous generations of ILSpy. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. # New Language Features * C# 11 checked operators * C# 11 unsigned right shift operator * C# 11 UTF8 string literals * C# 11 numeric IntPtr * C# 11 ref fields and scoped * mcs 2.6.4 pinned regions * Updated pattern-detection for Roslyn 4.6.0 # Contributions * Copy clipboard with full syntax-highlighting (#3045 by @ltrzesniewski) * Fix sequence-points on expression-bodied members (#3032 by @KirillOsenkov) * Fix annotations on nested type references (#3030 by @ltrzesniewski) * Add clipboard-related context menu to resources tables (#3024 by @miloush) * Fix decompilation of record with missing base type (#3021 by @andrewcrawley) * Add support for mcs 2.6.4 pinned regions (#3015 by @ElektroKill) * Improvements in CustomDebugInformation metadata table (#2799 by @fowl2) * Fix ArgumentOutOfRangeException on unexpected file in GAC (#2960 by @ificator) * Support for compound-assignments on pointers (by @ElektroKill) * Added a search box for resource tables (by @miloush) # Enhancements * Default update check for dotnet tool ilspycmd (#3035). Use --disable-updatecheck in automation scenarios. * VS 2022 extension ships with both x64 and ARM64 binaries (#3009) * Added ARM64 binaries and ARM64 installer downloads * WholeProjectDecompiler: Improve resources -> resx conversion * Improve decompilation of compound-assignments involving local variables * Refactor ILReader to support re-imports of basic blocks (#901) # Bug fixes * #2891: Populate framework_dirs with the correct values depending on the current host runtime. And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.0...v8.1). 2023-08-03T07:10:45+00:00 ILSpy v8.1.1 ILSpy v8.1.1 2023-09-16T17:38:16+00:00 Release notes for 8.1 apply https://github.com/icsharpcode/ILSpy/releases/tag/v8.1 as this release is a bugfix release only. Fixed bug #3069 in switch-on-string detection, where complex switches compiled with newer versions of the C# compiler would cause a crash. Other minor fixes included too. For details please see https://github.com/icsharpcode/ILSpy/compare/v8.1...v8.1.1 2023-09-16T17:38:16+00:00 ILSpy v8.2 ILSpy v8.2 2023-11-06T17:06:39+00:00 ILSpy 8.x is based on .NET 6.0. All artifacts **except** the self-contained distribution are built framework-dependent, which means [.NET 6.0.2 or later](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) must be installed prior to starting ILSpy. # New Language Features * C# 7.1 Pattern matching with generics * C# 8.0 Recursive patterns * C# 9.0 Relational patterns * C# 9.0 `not` patterns * C# 10.0 static abstract members in interfaces * C# 11.0 switch on `(ReadOnly)Span<char>` # Contributions * Add entry size info (@startewho, #3052) * Add GC Info to R2R output (@eduardo-vp, #3076) * Update R2R (@cshung, #3088) * Reduce "unsafe" by replacing byte* pointer usage with ReadOnlySpan&lt;byte&gt; (@fowl2, #3106 ) # Enhancements * #3090: add support for the `NUGET_PACKAGES` environment variable * Fixed some quirks in our search: #3064, #3065 and #3038 # Performance * #3075: Avoid processing already-transformed blocks by introducing `BlockTransformContext.IndexOfFirstAlreadyTransformedInstruction`, which allows us to track already transformed instructions after a block has been merged into another by `ConditionDetection`. * #3075: Add `NextSetBit` operation to `BitSet` to avoid looking at every store bit individually in `ReachingDefinitionsVisitor.GetStores()` * #3075: Fix `ILVariableEqualityComparer.GetHashCode` * #3075: Improve performance of `CSharpResolver.LookupSimpleNameOrTypeName` in cases with a large number of local variables. * #3075: Eliminate recursion in some parts of the decompiler engine * ILSpy UI: #3057 - sub-optimal use of `StringBuilder` when constructing tree-node labels # Bug fixes * #3061: Handler blocks of exception filter blocks do not have a header. * #3103: unaligned.stobj cannot be transformed into inline assignment * #3091: extension methods named `Add` were skipping some checks in `AccessPathElement.IsMethodApplicable`. * #3004: MetadataModule.ResolveEntity() returning null for System.IntPtr when C# 11 native integers are enabled. * #3105 - VS2017-2019 addin didn't properly match subdirectory structure of 2022 addin * #3014: Missing type information in lambda expressions And many other fixes, for a full list click [here](https://github.com/icsharpcode/ILSpy/compare/v8.1.1...v8.2). 2023-11-06T17:06:39+00:00