среда, 25 ноября 2020 г.

CIL Tools update 2.1

The CIL Tools version 2.1 added a new library CilTools.Metadata, as well as some new features and bug fixes for existing projects.

Download CIL Tools 2.1 on Github releases

CIL View ClickOnce installer

Documentation

CilTools.BytecodeAnalysis changes:

  • Add .NET Standard 2.0+ support
  • Add support for method implementation flags when outputting method signatures
  • Add support for function pointer types. The standard reflection APIs don't support function pointers, so this only works with custom implementations; but CilTools.Metadata does implement this functionality.
  • Add support for module-level ("global") functions and fields
  • Add syntax API support for calli instruction's operand
  • Add full custom modifiers support (they were previously only supported in standalone signatures). Only works with CilTools.Metadata or custom implementations.
  • Add syntax API support for custom modifiers
  • Add pinvokeimpl support (only CilTools.Metadata or custom implementations)
  • Add support for newslot and final keywords
  • Add support for generic types in signature parser
  • The TypeSpec class now inherits from System.Type, so it can be used in many contexts where reflection type construct is needed. The "Type" property of TypeSpec is now deprecated.
  • Format char default values as hex
  • Improve custom attribute support (raw attribute data now can be fetched - only CilTools.Metadata or custom implementations)
  • Improve empty method body handling. Now empty body is ignored only when method is is abstract, P/Invoke or implemented by runtime. In other cases the exception is generated.
  • Improve generic methods support. The CustomMethod class now has the GetDefinition method that inheritors can implement to enable fetching of method definition (and therefore parameter names)
  • Place custom attributes before default parameter values in disassembled method code
  • Fix ldloc.s/stloc.s instruction handling
  • Fix ldtoken instruction handling with field operand
  • Fix possible null reference when converting array/pointer of generic args to syntax
  • Fix return type output for CustomMethod implementations

CilTools.Runtime changes

  • Add exception block support for dynamic methods
  • Add method token resolution for dynamic methods

CIL View changes

  • Update assembly reading mechanism to use CilTools.Metadata instead of loading assemblies directly into the current process. This enables inspecting assemblies for another target framework (such as .NET Standard) or when some dependencies could not be resolved. This also means assemblies can be unloaded from memory when they are no longer needed.
  • Add syntax highlighting for calli instruction's operand
  • Support auto-completion in assembly and type combo boxes
  • Improve performance for type combo box when assembly has a lot of types
  • Rework search. Search results are now displayed in context menu. Method search is added.