среда, 7 декабря 2022 г.

CIL Tools v2.5 is released


The new version contains the following changes:

CilTools.BytecodeAnalysis

  • Add IReflectionInfo interface to enable custom properties on reflection objects (implemented by classes in CilTools.Metadata)
  • Add CilInstruction.ToSyntax()
  • Add Disassembler.GetAssemblyManifestSyntaxNodes
  • Add IParamsProvider interface (enables getting method parameters without resolving external assembly references, implemented by classes in CilTools.Metadata)
  • Support parameters and return type custom attributes
  • Support field custom attributes
  • Support .override and .vtentry directives
  • Support events in type disassembler
  • Support vararg sentinel (...) in method signatures
  • Support specialname and rtspecialname attributes on methods
  • Skip assembly name for types in the same assembly
  • Escape special characters in identifiers
  • Escape slash in string literals
  • Fix base type syntax in GetTypeDefSyntax
  • Fix TypeSpec.IsValueType for byref target types and generics
  • Fix extra whitepaces after directive names
  • Fix constructors to have void return type in disassembled CIL
  • Fix ldtoken syntax for types
  • Fix CilParserException when exception handler block closes after the last instruction in the method body
  • Fix literal syntax for enum and boolean types
  • Fix serializable attribute handling
  • Fix type name representation in syntax API (now namespace is handled as a separate identifier token)
  • Fix detection of <Module> type (global fields and functions)

CilTools.Runtime

  • Implement GetReferencedAssemblies and ManifestModule on DynamicMethodsAssembly

CilTools.CommandLine

  • Add view-source command
  • Add fileinfo command
  • Add support for viewing assembly manifest to view command
  • Add assembly disassembling support to disasm command
  • Roll-forward to next major versions of .NET Runtime
The view-source command enables you to display source code of the specified method based on info in debugging symbols (if they are present) or decompiled source (currently only a limited decompilation support for methods without body, i.e, abstract or pinvoke). 

The fileinfo command displays information about assembly files, such as PE header data or assembly-level custom attributes.

The Roll-forward feature means that you can run the app on .NET 5.0+, even though it targets .NET Core 3.1.

CIL View

  • Add Source Link support for Portable PDB symbols
  • Add source code syntax highlighting
  • Add instruction info
  • Add IL syntax highlighting in SourceViewWindow
  • Add support for viewing assembly manifest and Export assembly to file menu command
  • Add Recent files menu
  • Add HTML help
  • Change default filter in Open File dialog to include all supported file types (instead of only .dll and .exe)
  • Disable formatted view for .il files larger then 1 MB
  • Support viewing separate types from .il files
  • Load .il files in background

New Source view UI look with syntax highlighting: