Search code examples
c#.netvb.netdebuggingreverse-engineering

Compare compiled .NET assemblies?


Are there any good programs out there to compare to compile .NET assemblies?

For example I have HelloWorld.dll (1.0.0.0) and HelloWorld.dll (2.0.0.0), and I want to compare differences how can I do this?

I know I can use .NET Reflector and use the Assembly Diff plugin. Are there any other good tools out there to do this?


Solution

  • Ways to Compare .NET Assemblies suggests

    Commercial:

    Free:


    Existing compare tools like Beyond Compare (commercial) can do this by special configuration. Here's how to do this for Beyond Compare:

    • Go to ToolsOptions
    • Click New.., select "Text format", click OK
    • Give it a name (say, EXE, or DLL), and specify the mask as *.exe or *.dll
    • Click on tab Conversion and select "External program (Unicode filenames)"
    • Under "Loading", specify the path to ildasm and add %s /OUT:%t /NOBAR (i.e.: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe %s /OUT:%t /NOBAR)
    • Make sure to check disable editing.
    • Click Save, then Close
    • Restart BC and open two exe files to compare, it should decompile into ilasm automatically now.

    You can also add syntax highlighting to this new format. I plan to send the syntax file to them so that it'll become available to share.