Introduction
This post will contain my recommendations for various tools, plug-ins, and API’s for .NET developers. These are the tools that I believe if a .NET Developer was stuck on an island, he/she would need. Although honestly, I guess if you are stuck on an island, you probably need electricity and an Internet connection first, but I digress.
I have a strong preference for open and free programs, but in some cases I make an exception.
If you would like to know a recommended solution or tool for a category not mentioned, please click Ask Brian for a Recommendation to contact Brian. If you have a suggestion for another tool that you believe is essential for .NET Developers or disagree with my recommendations, please comment on this blog.
Core Toolkit
Application Logging API
This is a no-brainer. I use log4net on every .NET project. It is the best logger available for .NET due to its simplicity, flexibility, and reliability.
Integrated Development Environment (IDE)
This is also a no-brainer. Visual Studio is absolutely the best IDE for .NET development available. The free version, Visual Studio Express is a good alternative if the full version is too cost prohibitive or you are just a hobbyist and new developer.
There are a few alternatives to Microsoft’s product offerings.
The Mono Project, an open-source and cross-platform .NET implementation has an IDE. The Mono Project doesn’t implement the full .NET stack, but does implement a significant portion of the stack.
However, the best open-source IDE for .NET developers is SharpDevelop. It supports Visual Basic.NET and C#.
Integrated Development Environment (IDE) Plug-ins for Visual Studio
If you use Visual Studio, I highly recommend GhostDoc. It is an invaluable tool that makes documenting code a breeze.
Merge/Compare for Windows
I installed and evaluated countless free and commercial merge/comparison utilities. Although I use to be a big fan of Araxis Merge, now I use WinMerge exclusively. It is reliable and has all of the core features that you need including folder and file comparison, merging capabilities, and nice visual comparison.
Tail for Windows
If you develop any application, you need a good tail program to monitor log files. Of course if you are developing on the Linux or Unix platforms, you already have one. However, for whatever reason, Windows does not have a tail program included. I installed evaluated countless programs, but without a doubt the best is Tail for Win32
Text Editor for Windows
If you need a stable, reliable, and feature rich text editor for the Windows platform that is free, I highly recommend Notepad++.
If you are willing to pay for a text editor, which I am not, then I recommend TextPad. TextPad is stable and has more features than NotePad++, but it also costs money.
UML Modeling
Although, I tend to prefer open-source solutions over commercial, in this category, I will make an exception. For UML Modeling, I highly recommend Altova UModel. It is simply an amazing product that provides all of the UML functionality that most developers need. It costs only a few hundred dollars depending on the edition that you purchase. It supports C# and Java, which is a big plus for me because I do both .NET and Java programming. It just works, what else can I say.
Version Control
For .NET developers, Visual Studio Team System is the best Application Lifecycle Management (ALM) product available (commercially or open-source). It offers much more than source code management. Compared to other ALM products, it is less expensive and provides more value per dollar.
If you are looking for strictly a version control system, my favorite version control system is Subversion. I have to admit, at first I didn’t like Subversion due to its stability problems, but it has matured into a very stable and reliable product. It’s advantages over CVS, which is certainly a decent source code management system, are known and vast. There are Subversion plug-ins for all major IDE’s including Eclipse and Visual Studio.
Accessories (Nice to haves)
Dynamic PDF Generation
I use iTextSharp on many projects to dynamically generate PDF documents or to add watermarks or overlays to existing PDF documents. The API is consistent, the code is well-written, and most importantly it is well-documented. It is a port of the Java based iText library.
To convert Microsoft Office documents to PDF, I recommend the Microsoft Office 2007 add-in, Microsoft Save as PDF Plugin. I used this successfully in many server-side and client-side automation projects.
Office Document Creation and Manipulation API
Microsoft has an excellent SDK, Open XML SDK, to create or manipulate Open XML documents using .NET.
If you need to create or manipulate Microsoft Office documents in the binary format (Office 2003 and earlier), you can use the COM components for Microsoft Office. There are of course issues with automating Microsoft Office on the server-side, but I have successfully worked around them on several projects.
XSL Formatting Objects (XSL:FO)
I use NFOP frequently. It is not as robust and scalable as some commercial XSL:FO implementations, such as Antenna House, RenderX, or Arbortext Publishing Engine, but it implements the core of the XSL:FO standard. It is definitely maturing into a stable and reliable product. The XSL:FO is more fully supported with the recent major rewrite that addressed compliance and performance issues. I used it in several production solutions without any problems.
If you prefer a commercial solution, I recommend any of the XSL:FO engines listed above. I have used all of the above commercial solutions in production scenarios and you can’t go wrong with any of them. Although there are plenty of die-hard fans of the different products, I find all the three products listed above to be viable and formidable products.
ASP.NET RSS Toolkit
If you need to add RSS capabilities to a web site, I highly recommend the ASP.NET RSS Toolkit available on CodePlex. The toolkit provides the ability to consume (RSS/ATOM) and publish RSS feeds. It is highly flexible, feature-rich, and scalable.