While FxCop is an invaluable tool for analyzing the external (public / protected) API of our assemblies, I was really hoping to have a way to also fire it against internal members of our code in order to enforce coding standards across our organization. David Kean’s tip shows us exactly how to do that! It turns out to be a simple matter of turning on the Run all overridable rules against all targets option under Project | Options | Spelling & Analysis menu.
Perhaps the best kept secret (or at least the least discussed feature) of Visual Studio 2005 is the client-side reports. Client-side reports consists of the Report Viewer Control and it’s accompanying Report Designer that comes standard with Visual Studio 2005 Professional and up.
This feature can be used to develop ASP.NET or WinForms solutions that sport SQL Server Reporting Services style reports, without having to deploy those reports to a Reporting Server. Reports are deployed as RDLC files with your solutions. In fact one doesn’t even need SQL Server, since these reports can be programatically bound to objects such as DataSets, a huge plus for ditributed n-tier designs where the UI layer does not have direct access to the data store. This also means that one can use any imaginable back-end data store including XML and CSV files as long as data can be loaded into binable objects.
The report viewer control is similar to Reporting Services report viewer, with nifty features such as paging, searching, and export (PDF, Excel, CSV) features. My only complain with the ASP.NET version of the report viewer is that it does not directly support printing. Reports have to be exported to PDF in order for one to print. This was a gotcha with the first versions of Reporting Services report viewer as well, but later they added printing support to the control (perhaps through ActiveX) in Reporting Services SP1.
You can find more information about this feature at GotReportViewer.
GhostDoc is a free Visual Studio add-in that automatically generates XML comments by intelligently deducing comments from member name and type or by using existing documentation written by someone else in a base class or an interface.
This tool is purely intelligent and simply amazing. With tools such as this there simply is no excuse for developers whose code looks all black and blue to not add some green for free!
Checkout this GhostDoc PDC demo video on Channel9.