In this tip, Victor Garcia Aprea of ClariuS consulting talks about two of his favorite .NET development tools -- a code merging and comparing tool from Araxis and a free code navigator developed by Lutz Roeder.
If you are part of a development team and not a solo developer, chances are you face daily tasks like analyzing and reconciling source code differences between different versions of the same file and keeping your local source tree in sync with the source repository. This is often a cause of pain and something that most developers will try to avoid as much as possible. I have found that most developers are just using very simple merge tools like WinDiff or WinMerge that can't do much when compared to much powerful tools like Araxis Merge.
The graphical user interface is pretty slick. You can choose between vertical (left pane and right pane) and horizontal (top pane and bottom pane) layouts to display the compared files. The specific portions of modified text -- and not just the whole line, as with other merge tools -- are highlighted to better show the differences found, and connecting lines are drawn to show where text from one file would be inserted into the other file. Three-way merging is also supported; in this case, you would have three panes with the middle one usually representing the final version and receiving changes from the left and right panes. Another really nice touch is that you can edit the file in place by just writing in one of the window panes.
Comparisons in Araxis Merge don't stop at the file level. The product supports folder comparisons, which is very handy when syncing source trees or developing Web applications where you usually have to compare locally deployed files against production ones and looking for that minor difference making the application behave differently in both environment.
There are two other Araxis Merge features worth mentioning -- its reporting capability supports several file formats (html, xml, etc.), and its automation API (including its correspondent documentation) can be used to consume the product's functionality from your custom application or tool. On the con side, the biggest concern I found was the lack of syntax highlighting, which is something that could surely facilitate merging.
This free tool from Lutz Roeder is one of the tools you can't live without if you're developing for the .NET platform. It started out back in October 2000 as a metadata browser listing all metadata in an assembly (classes, interfaces, methods and attributes, to name a few). Now it is a full disassembler supporting C#, VB.NET, Delphi and IL.
Its UI is very simple. There is a left pane containing a treeview that lets you navigate, from top to bottom, all metadata found into assemblies, and there is a right pane that uses an HTML browser to display source code and enable hyperlinking between all browseable elements. For example, while looking at the source code for a given method, you can click on another method's name used in that method in order to automatically navigate to a disassembled view of it. This makes the code navigation in Reflector sometimes faster and easier than if you were navigating source code files directly.
One of the more interesting features of Reflector is that it offers a plug-in model that allows for its extension, thus enabling others to provide additional functionality like support for disassembling into additional languages (i.e. C++), generating source files and code metrics.
Victor Garcia Aprea is cofounder of Buenos Aires-based Clarius Consulting. He has has been a Microsoft MVP for ASP.NET every year since 2002. He has written books and articles for Wrox Press, Apress and Microsoft Press and is also a regular speaker and international conferences like VSLive!.
Do you have comments on this tip or product recommendations of your own? Let us know.