.NET Reflector 11

.NET Reflector 10.1 release notes

10.1.8 - October 24th, 2019

Fixes

  • RP-4199: Fixed issue with Reflector suddenly closing while exporting some applications.

Improvements

  • RP-4198: Vertical guides were added to indicate indented code scopes.
  • RP-4202: Embedded resources with the following file extensions will now be shown as plain text: .cshtml, .vbhtml, .razor, .jsx, .ts, .tsx, .json, .less, .sass, .scss.

10.1.7 - September 24th, 2019

Features

  • RP-4174: Support equality operators for the tuples comparison.

    The following code:

    bool TestMethod((int a, int b) X, (int a, int b) Y)
    {
        return 
            (X.a != Y.a || X.b != Y.b) &&      // X != Y
            (Y.a == (X.a + X.b) && Y.b == 0);  // Y == (X.a + X.b, 0)
    }


    is now correctly recognised as tuple comparison and optimised to:

    bool TestMethod((int a, int b) X, (int a, int b) Y)
    {
        return X != Y && Y == (X.a + X.b, 0);
    }

Improvements

  • RP-4187: A warning will be shown when "Go To Decompiled Definition" is not possible for selected code in .NET Reflector VS Extension.

Fixes

  • RP-4180: Fixed misinterpreted increment and decrement operators.
  • RP-4191: Fixed invalid order of expressions.
  • RP-4195: Exception handler range is now respected in all cases, preventing unrelated code to be wrongly included in the catch block.
  • RP-4196: Fixed incorrect IL offsets of expressions produced by dup instruction.

10.1.6 - August 21st, 2019

Fixes

  • RP-4163: In some cases .NET Reflector used an unassigned variable.
  • RP-4164, RP-4167, RP-4179: Fixed issue with incorrect order of expressions.
  • RP-4186: .NET Reflector VS Extension now correctly jumps to decompiled definition when F12 shortcut (Go to declaration) is used in Visual Studio 2019.

Improvements

  • RP-4162: Improved detection of redundant local variables.

10.1.5 - May 10th, 2019

Fixes

  • RP-4143: In .NET Reflector VS Extension "Access is denied" error should no longer appear on start-up.
  • RP-4166: Return value of a delegate type is no longer cast to an invalid type.
  • RP-4169: When optimised, object initializer no longer contains duplicated member assignments.

Improvements

  • RP-4171: Compiler-generated property backing fields are no longer visible.

Features

  • Added support for new C# 7.x features:

    • RP-4165: Local ref reassignment (C# 7.3)

      public void RefLocalReassignment()
      {
          int i = 5;
          ref int r1 = ref i;
          ref int r2 = ref i;
          ref int rr = ref r1;
          rr = ref r2;
          rr = 10;
      }
    • RP-4165: Conditional ref expressions (C# 7.2)

      public void TestConditionalRef(int a, int b, bool c)
      {
          ref int value = ref c ? ref a : ref b;
      }
    • RP-4165: ref return (C# 7.0)

      public ref int TestRefReturn(ref int a, ref int b, bool c)
      {
          if (c)
              return ref a;
          else
              return ref b;
      }
    • RP-4165: ref and in extensions (C# 7.2)

      public static class Extensions
      {
          // Ref extensions
          public static int Extension1(this ref int arg)
          {
              var tmp = arg;
              arg *= 2;
              return tmp;
          }
      }
      
      public class Test
      {
          public void TestRefExtensions()
          {
              int a = 5;
              ref int b = ref a;
              b.Extension1();
          }
      }
    • RP-4165: readonly ref (C# 7.2)

      public ref readonly int TestRefReadonly(bool condition, ref int r)
      {
          ref readonly int q = ref r;
          return ref r;
      }
    • RP-4165: in arguments (C# 7.2)

      public ref readonly int TestRefInArguments(in int a)
      {
          return ref a;
      }
    • RP-4168: private protected access modifier (C# 7.2)

      public class TestClass1
      {
          private protected class NestedClass
          {
          }
      }
    • RP-4170: Attributes for auto-generated property backing fields (C# 7.3)

        [field: SomeAttribute]
        public int TestProperty { get; set; }

10.1.4 - April 2nd, 2019

Minor changes

  • .NET Reflector now requires .NET Framework 4.6.1 or later (was previously 3.5 or later).
  • Information pane about new decompilation engine was removed. New decompilation engine is used by default, unless changed by the option on a toolbar.

10.1.3 - March 20th, 2019

Enhancements

  • .NET Reflector Visual Studio Extension now supports Visual Studio 2019 Preview.

Fixes

  • Issue with .NET Reflector add-in services is now fixed.

10.1.2 - January 23rd, 2019

Improvements

  • RP-4149: In certain situations, proper expression order is now ensured during code translation.
  • .NET Reflector now shows detailed messages for methods with wrong IL code.

Fixes

  • RP-4150, RP-4154: Recent font scaling issues on high DPI screens are now fixed.
  • RP-4147: Detection of installed frameworks on Assembly List creator was fixed. When creating a new list it includes installed versions of .NET Framework, Silverlight, DNX and WinRT.

10.1.1 - November 20th, 2018

Fixes

  • RP-4142: PDB can now be generated simultaneously for many assemblies in .NET Reflector Visual Studio Extension.

10.1.0 - October 25th, 2018

Starting with this release our new decompilation engine is used by default in both .NET Reflector and .NET Reflector Visual Studio Extension. The old engine can still be used by checking “Use the old decompilation engine” checkbox on the toolbar, however it’s considered deprecated and will be removed in a future version.

The new engine should generate more accurate code and be more stable. If you have any suggestions, don’t hesitate to click the envelope button inside the application. We’d love to hear your thoughts!

Features

  • RP-4138: New decompilation engine is now used by default.

Fixes

  • RP-4133: Clicking “Open with” in Assembly Browser’s context menu is now fixed.
  • RP-4134: Populating “Open with” menu was improved. We properly check for installed Visual Studio and ILDasm versions.
  • RP-4137: SByte variables with a negative number assigned are now properly decompiled.

Didn't find what you were looking for?