JustDecompile Feature Suggestions

Welcome to the Telerik JustDecompile feature suggestion forum. Please vote or submit a feature suggestion. If it is not a product feature request it might be moderated.

Please note this tool is helping Telerik plan ideas and understand how developers use JustDecompile. It may not always represent the actual priority list for the product team.

JustDecompile is a free .NET assembly browser and decompiling tool. Download JustDecompile for free and learn more: http://www.telerik.com/justdecompile

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  1. Enable editing of Assemblies like in dnSpy

    It would be cool if we could have editing capabilities like in dnSpy because with this tailored de4dot + editing capabilities in JustDecompiler we could reverse so many things.

    I don't mean like using Reflexil, I mean using like in dnSpy the C# representation of the IL code to edit a class / a method in the Assembly.

    13 votes
    Vote
    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      Signed in as (Sign out)
      You have left! (?) (thinking…)
    • correct spelling and handling of vbCrLf in VB.NET

      If one e.g. decompiles property NewLine of System.Environment (mscorlib), the VB-Code probably works but is incorrect from the casing (it's "vbCrLf" and not "VbCrLf") and totally ugly with these two leading and tailing empty strings.

      Old: (stripped of attributes)
      Public ReadOnly Property NewLine As String
      Get
      Return "" & VbCrLf & ""
      End Get
      End Property

      New: (stripped of attributes)
      Public ReadOnly Property NewLine As String
      Get
      Return vbCrLf
      End Get
      End Property

      (Probably it's easiest to just keep the current logic, and when the string is composed with all the "& vbCrLf &" and other constants just replace empty…

      1 vote
      Vote
      Sign in
      Check!
      (thinking…)
      Reset
      or sign in with
      • facebook
      • google
        Password icon
        Signed in as (Sign out)
        You have left! (?) (thinking…)
      • Color or Highlight Matching Brackets (Braces)

        When hovering over, clicking on, or selecting a single curly brace or parenthesis character, highlighting it and its matching open or close bracket would be very helpful. Multiple levels of "if", "else if", etc. clauses with nested brackets can make it challenging to read and determine which "IF" clause is ending. I realize that the indention level indicates the pairing, but it is hard when you have to scroll several screens to locate the next bracket in that exact column.
        Examples:
        VSCode - Brackets are highlighted automatically: https://code.visualstudio.com/docs/editor/editingevolved#_bracket-matching
        Notepad++ - The open and close brackets for the selected tag turn…

        4 votes
        Vote
        Sign in
        Check!
        (thinking…)
        Reset
        or sign in with
        • facebook
        • google
          Password icon
          Signed in as (Sign out)
          You have left! (?) (thinking…)
        • Conditional line does not work

          Conditional line does not work:
          private void btnFile_Click(object sender, EventArgs e)
          {
          this.rdoMsAccess.Checked = true;
          this.OpenMSAccessDialog.ShowDialog();
          if ((this.OpenMSAccessDialog.FileName.Length & -(this.OpenMSAccessDialog.FileName.EndsWith("mdb") | this.OpenMSAccessDialog.FileName.EndsWith("accdb"))) != 0)
          {
          this.lblFile.Text = this.OpenMSAccessDialog.FileName;
          }
          }

          Better this one:

          public void btnFile_Click(System.Object sender, System.EventArgs e)
          {
          rdoMsAccess.Checked = true;
          OpenMSAccessDialog.ShowDialog();
          if (OpenMSAccessDialog.FileName.Length != 0 && (OpenMSAccessDialog.FileName.EndsWith("mdb") || OpenMSAccessDialog.FileName.EndsWith("accdb")))
          {
          lblFile.Text = OpenMSAccessDialog.FileName;
          }
          }

          Conditional line does not work:
          private void btnPrj_Click(object sender, EventArgs e)
          {
          this.rdoLuna.Checked = true;
          this.OpenLunaPrj.ShowDialog();
          if ((this.OpenLunaPrj.FileName.Length & -this.OpenLunaPrj.FileName.EndsWith("lds")) != 0)
          {
          this.lblFilePrj.Text = this.OpenLunaPrj.FileName;
          }
          }

          Better this one:

          public void btnPrj_Click(System.Object sender, System.EventArgs e)
          {
          rdoLuna.Checked = true;
          OpenLunaPrj.ShowDialog(); …

          1 vote
          Vote
          Sign in
          Check!
          (thinking…)
          Reset
          or sign in with
          • facebook
          • google
            Password icon
            Signed in as (Sign out)
            You have left! (?) (thinking…)
          • Handling of Enumerations

            Two misshandlings of Enumerations observed:

            a) Having enumeration as parameter of method with default value, the value is set as integer not as member of the enumeration

            void MyMethod(MyEnumeration myEnumerationParameter = 1)

            should be

            void MyMethod(MyEnumeration myEnumerationParameter = MyEnumerationMemberOfMyEnbumerationFor1)

            b) Returning enumeration value, which needs to be casted as the returning value is an integer or another enumeration.

            MyEnumeration MyMethod()
            {
            return OtherEnumeration.OtherEnumerationMember;
            }

            should be

            MyEnumeration MyMethod()
            {
            return (MyEnumeration) OtherEnumeration.OtherEnumerationMember;
            }

            and

            MyEnumeration MyMethod()
            {
            return 1;
            }

            should be

            MyEnumeration MyMethod()
            {
            return (MyEnumeration) 1;
            }

            7 votes
            Vote
            Sign in
            Check!
            (thinking…)
            Reset
            or sign in with
            • facebook
            • google
              Password icon
              Signed in as (Sign out)
              You have left! (?) (thinking…)
            • export the same code to visual studio projects who is shown in the UI

              some times the exported code in visual studio projects is different from the code who is shown in the UI. the only way to have the correct code in VS is to copy and paste from the UI to VS.

              exported code:
              tag = (Game.get_Player().get_Character().get_IsProne() ? true : !Game.get_Player().get_Character().get_IsRagdoll());

              UI Code:
              tag = (Game.Player.Character.IsProne ? true : !Game.Player.Character.IsRagdoll);

              the exported code isnt working, but the pasted code.

              Pease fix this.

              1 vote
              Vote
              Sign in
              Check!
              (thinking…)
              Reset
              or sign in with
              • facebook
              • google
                Password icon
                Signed in as (Sign out)
                You have left! (?) (thinking…)
              • Handling of optional parameters

                It's a nice to have feature, as your decompilation is quite correct.

                If there is a method with optional parameters

                void MyMethod(string myStringParameter, bool myOptionalParameter1 = true, bool myOptionalParameter2 = true)

                you decompile it with the full set of parameter values

                MyMethod("MyString", true, true);

                but original code had been

                MyMethod("MyString");

                as the both "true" values are defaults for the optional parameters

                It would be nice to get the "original" code instead the full parametrised method like your current decompilation,

                4 votes
                Vote
                Sign in
                Check!
                (thinking…)
                Reset
                or sign in with
                • facebook
                • google
                  Password icon
                  Signed in as (Sign out)
                  You have left! (?) (thinking…)
                • Handling of field initialization

                  Don't know why, but I observed by recovering a project from binary (code was lost by hard disk crash) that field initialization haven't reworked by JustDecomplie like this:

                  private MyList<MyObjectType> myListInstance;

                  have been in the original code

                  private MyList<MyObjectType> myListInstance = new MyList<MyObjectType>();

                  Why not possible to get this second line back by JustDecompile?

                  2 votes
                  Vote
                  Sign in
                  Check!
                  (thinking…)
                  Reset
                  or sign in with
                  • facebook
                  • google
                    Password icon
                    Signed in as (Sign out)
                    You have left! (?) (thinking…)
                  • Review IL and higher level languages at the same time

                    when viewing IL code, have options to add eq higher source code as a comment or hover:

                    // Console.WriteLine("Hello, World)";

                    ldstr "Hello, World"
                    call void [mscorlib]System.Console::WriteLine(class System.String)

                    1 vote
                    Vote
                    Sign in
                    Check!
                    (thinking…)
                    Reset
                    or sign in with
                    • facebook
                    • google
                      Password icon
                      Signed in as (Sign out)
                      You have left! (?) (thinking…)
                    • Why spam update popup every time you start?

                      That's stupidly annoying, please just give us an option to disable checking for updates ESPECIALLY if you're going to make us log in with Telerik to download or some nonsense.

                      8 votes
                      Vote
                      Sign in
                      Check!
                      (thinking…)
                      Reset
                      or sign in with
                      • facebook
                      • google
                        Password icon
                        Signed in as (Sign out)
                        You have left! (?) (thinking…)
                      • Value Types

                        Allow constant values to be toggled to hex

                        1 vote
                        Vote
                        Sign in
                        Check!
                        (thinking…)
                        Reset
                        or sign in with
                        • facebook
                        • google
                          Password icon
                          Signed in as (Sign out)
                          You have left! (?) (thinking…)
                        • Dropdown list for all class members like in Visual Studio

                          In VS, there is a dropdown at the top right of the code editor window where I can pick from all the properties, methods and events of the class I am editing. I'd rather look at a summary of all members than on just a wall of code. Someone else had this idea and posted it, but that was four years ago and a Telerik Admin said it "should be improved in JD’s latest version 2013.2.613.0". But this feature is still not available.

                          4 votes
                          Vote
                          Sign in
                          Check!
                          (thinking…)
                          Reset
                          or sign in with
                          • facebook
                          • google
                            Password icon
                            Signed in as (Sign out)
                            You have left! (?) (thinking…)
                          • 2 votes
                            Vote
                            Sign in
                            Check!
                            (thinking…)
                            Reset
                            or sign in with
                            • facebook
                            • google
                              Password icon
                              Signed in as (Sign out)
                              You have left! (?) (thinking…)
                            • test

                              test

                              1 vote
                              Vote
                              Sign in
                              Check!
                              (thinking…)
                              Reset
                              or sign in with
                              • facebook
                              • google
                                Password icon
                                Signed in as (Sign out)
                                You have left! (?) (thinking…)
                              • Ability to search a resource table for a string

                                sometimes we need to look at the resource table of third party dlls. If the table is large finding a string is difficult. With search for resource string we can find the string we need. This is important in translating error messages from the third party dll into a format that is easily understood by our users.

                                2 votes
                                Vote
                                Sign in
                                Check!
                                (thinking…)
                                Reset
                                or sign in with
                                • facebook
                                • google
                                  Password icon
                                  Signed in as (Sign out)
                                  You have left! (?) (thinking…)
                                • Decompile methods that use the await keyword

                                  Currently, it is impossible to see the code a call to a method that calls await. It appears the compiler is dynamically generating a method that holds the code that follows the await. Unfortunately, JustDecompile just hangs when you click on the method name in order to see the generated method.

                                  6 votes
                                  Vote
                                  Sign in
                                  Check!
                                  (thinking…)
                                  Reset
                                  or sign in with
                                  • facebook
                                  • google
                                    Password icon
                                    Signed in as (Sign out)
                                    You have left! (?) (thinking…)
                                  • Does not properly handle equality operator

                                    The decompiler does not properly decompile == operators in C# code. Here's a snippet
                                    public class Myclass
                                    {
                                    public bool Equals ( MyClass other )
                                    {
                                    if (other == null)
                                    return false;
                                    }
                                    }

                                    That code converts to the following generated call.

                                    call bool ConsoleApp1.MyClass::op_Equality(MyClass, MyClass)

                                    But the decompile shows this.

                                    if (other != null)
                                    ...

                                    1 vote
                                    Vote
                                    Sign in
                                    Check!
                                    (thinking…)
                                    Reset
                                    or sign in with
                                    • facebook
                                    • google
                                      Password icon
                                      Signed in as (Sign out)
                                      You have left! (?) (thinking…)
                                    • convert il to powershell

                                      convert il to powershell

                                      4 votes
                                      Vote
                                      Sign in
                                      Check!
                                      (thinking…)
                                      Reset
                                      or sign in with
                                      • facebook
                                      • google
                                        Password icon
                                        Signed in as (Sign out)
                                        You have left! (?) (thinking…)
                                      • 16 votes
                                        Vote
                                        Sign in
                                        Check!
                                        (thinking…)
                                        Reset
                                        or sign in with
                                        • facebook
                                        • google
                                          Password icon
                                          Signed in as (Sign out)
                                          You have left! (?) (thinking…)
                                          1 comment  ·  Admin →
                                        • 5 votes
                                          Vote
                                          Sign in
                                          Check!
                                          (thinking…)
                                          Reset
                                          or sign in with
                                          • facebook
                                          • google
                                            Password icon
                                            Signed in as (Sign out)
                                            You have left! (?) (thinking…)
                                          ← Previous 1 3 4 5 18 19
                                          • Don't see your idea?

                                          JustDecompile Feature Suggestions

                                          Feedback and Knowledge Base