The Power Toys Pack Installer, shown in Figure B-12, is an open source CodePlex project that downloads a feed full of at least three dozen projects, samples, starter kits and extensions
Trang 1What’s better than a useful Visual Studio Add-in? Why, an automatic installer that downloads a list of
useful add-ins and lets you select them and install at once, that’s what! The Power Toys Pack Installer,
shown in Figure B-12, is an open source CodePlex project that downloads a feed full of at least three
dozen projects, samples, starter kits and extensions that can be selected and installed en masse.
Figure B-12
The selection is cherry-picked from projects and downloads all over Microsoft Some highlights include
Microsoft NET Interfaces for Skype and starter kits for creating your own Shareware Developer tools
include ILMerge, a utility for merging multiple NET assemblies into a single assembly, the Internet
Explorer Developer Toolbar mentioned earlier in this chapter, a Managed Stack Explorer for investigating
application hangs, and XML Notepad 2007, an experimental interface for browsing and editing XML
documents There are also choice Add-Ins such as the VS Source Outliner, giving you a tree view of your
project’s member and types for use as an alternative navigational method A few tools aren’t ready for
Visual Studio 2008, but I expect to see them updated, given community pressure
Trang 2Extending ASP.NET
‘‘Oh man! :-) I have shoot into my foot myself ;-) Sorry!’’ — matz.’’
ASP.NET AJAX Control Toolkit
The AJAX Control Toolkit is a collaboration between Microsoft and the larger ASP.NET community
Its goal was to provide the largest collection of Web client components available It includes excellent
examples if you want to learn how to write ASP.NET Ajax yourself, and then it gives you the opportunity
to give back and have your code shared within the community
There are literally dozens of controls that build on and extend the ASP.NET Ajax framework Some of
the controls are simple and provide those nice ‘‘little touches’’ such as drop shadows, rounded corners, watermarks, and animations Others provide highly functional controls such as calendars, popups, and sliders
Complete source is available for all the controls so that they can be extended and improved by you These controls are more than just samples; they are complete and ready to be used in your applications
There’s a complete demo site available athttp://ajax.asp.net/ajaxtoolkit/showcasing examples
of each control so you can try each one to see if it meets your needs, as illustrated in Figure B-13, for
example
Figure B-13
Note that there are two versions one for Visual Studio 2005 and one for Visual Studio 2008 Features
that are specific to the 2008 version include ‘‘reference tags’’ for toolkit JavaScript files providing more
complete JavaScript IntelliSense support within Visual Studio
Trang 3Troubleshooting errors and unhandled exceptions in your applications can be a full-time job Rather
than writing your own custom global exception handlers every time, consider looking at the ELMAH
(Error Logging Modules And Handlers) from Atif Aziz It’s a very flexible application-wide error logging
facility with pluggable extension points to the interfaces at nearly every location You can even configure
it in your application without re-compilation or even redeployment Simply modify yourweb.configto
include the error logging modules and handlers, and then you’ll receive a single Web page to remotely
review the entire log of unhandled exceptions
ELMAH captures so much information about exceptions that it can reconstitute the original ‘‘yellow
screen of death’’ that ASP.NET would have generated given an exception, even if customErrors was
turned off It’s almost like TiVo for your exceptions! Figure B-14 shows ELMAH, providing a developer’s
view, including all the details you might need to debug this error
Figure B-14
Another clever feature is an RSS feed that shows the last 15 years from your log This flexible tool is open
source and the recent beta includes support for medium trust environments You can plug in SQL Server
or use an XML file to manage your error logs I highly recommend you take the time to learn about
ELMAH
Trang 4Helicon’s ISAPI_Rewrite
Users of the Apache Web server sing the praises of the power ofmod_rewrite, their URL rewriting
mechanism IIS users have this available to them in the form of the ISAPI Rewrite module from Helicon It’s incredibly fast because it’s written in pure C It integrates nicely with ASP.NET because URLs are
rewritten before ASP.NET realizes anything has happened
Because it uses regular expressions, it can initially be very frustrating due to its terse syntax However, if you are patient, it can be an incredibly powerful tool for your tool belt
I recently discovered that there were a dozen ways to visit my blog that all lead to the same location
This was a confusing Google because it appeared that my blog had multiple addresses I wanted not only
to canonicalize my URL but also send back a 301 HTTP redirect to search indexes, thereby raising my
standing within the search by appearing to have only one official URL
For example, all of these links were valid ways to reach my blog:
❑ www.hanselman.com/blog/default.aspx
❑ http://hanselman.com/blog/
❑ http://hanselman.com/blog/default.aspx
❑ www.hanselman.com/blog/Default.aspx
❑ http://computerzen.com/blog/
Notice that there’s a difference between a trailing slash and no trailing slash in the eyes of a search engine Using ISAPI Rewrite, I created this rather terse but very effective configuration file:
[ISAPI_Rewrite]
RewriteRule /blog/default\.aspx http\://www.hanselman.com/blog/ [I,RP]
RewriteCond Host: ^hanselman\.com
RewriteRule (.*) http\://www.hanselman.com$1 [I,RP]
RewriteCond Host: ^computerzen\.com
RewriteRule (.*) http\://www.hanselman.com$1 [I,RP]
RewriteCond Host: ^www.computerzen\.com
RewriteRule (.*) http\://www.hanselman.com/blog/ [I,RP]
The I and RP at the end of the line indicate that this match is case insensitive and the redirect should
be permanent rather than temporary The rules that include a $1 at the end of line cause the expression
to include any path after the domain name This allows the rule to apply site-wide and provides these
benefits to every single page on my site It’s powerful and that’s worth your time
Trang 5‘‘If you get the dirty end of the stick, sharpen it and turn it into a useful tool’’ — Colin Powell
Telerik’s Online Code Converter
Creating samples that should appear in both C# and Visual Basic can be very tedious without the
assis-tance of something like Telerik’s CodeChanger.com
While it’s not an officially supported tool, this little application will definitely get you 80 percent of the
way when converting between Visual Basic and C#
It also understands a surprising number of rather obscure syntaxes, as shown in Figure B-15, where I
tried to convert an immediateiffrom C#’s?:syntax to VB’sIIfsyntax It’s not only useful for the
writer, and blog author, but also anyone who’s trying to switch projects between the two languages
Figure B-15
Trang 6WinMerge and Differencing Tools
Everyone has their favorite merge tool Whether yours is WinMerge (Figure B-16), or Beyond Compare,
or the old standby WinDiff, just make sure that you have one in your list of tools that you’re very famil-iar with When managing large numbers of changes across large numbers of individuals on software
development teams, a good merge tool can help you untangle even the most complicated conflicting
checkins
Figure B-16
A number of different plug-ins are available for WinMerge that extend its functionality to include com-parison of Word and Excel documents and XML files
Other highly recommended merge tools include Beyond Compare from Scooter Software and DiffMerge from SourceGear Each of these three tools integrates with Windows Explorer, so the comparing files are
as easy as a right-click
Trang 7If you’re not using Reflector, your NET developer experience is lesser for it Reflector is an object
browser, decompiler, help system, powerful plug-in host, and incredible learning tool This tiny
util-ity from Microsoft developer Lutz Roeder is consistently listed as the number one most indispensable
tool available to the NET developer after Visual Studio
Reflector is amazing because it not only gives you a representation of the programmer’s intent by
trans-forming IL back into C# or VB, but it includes analysis tools that help you visualize dependencies between
methods in the NET Base Class Library and within your code or any third party code In Figure B-17,
you can see not only a C# representation of the code inside System RolePrincipal, but more importantly
the methods that use it within the framework You can continue on as deep as you want within the
theoretical call stack
Figure B-17
While Reflector’s decompilation abilities may become less useful with the release of the Base Class
Library source code under the Microsoft Reference License, its abilities as an object browser and its
vibrant plug-in community will keep this tool on the top shelf for years to come
Trang 8CR_Documentor (Figure B-18) is another free plug-in that uses the DxCore extension technology from
DevExpress This tool is a collaboration between developer Travis Illig and Reflector author Lutz Roeder
Figure B-18
This add-on allows you to see a preview of your XML document comments in real time as you edit them within your source code in Visual Studio
CR_Documentor lets you choose your level of compliance including support for the
now-defunct-but-still-useful NDoc project as well as Microsoft specific tags for use with the Microsoft ‘‘Sandcastle’’
Documentation building suite of tools
CR_Documentor also includes context menu support with snippets and helpful templates making it
much easier to visualize complicated documentation XML documentation source code provides all the tools and tags needed to make MSDN-quality help CR_Documentor provides that last missing piece in the form of excellent and accurate visualization It’s indispensable if you intend on building compiled
help files from your source code
Trang 9Last, but unquestionably not least, is Process Explorer from Mark Russinovich To call it ‘‘Task Manager
on steroids’’ would not even begin to do it justice Process Explorer puts windows itself under a
micro-scope by allowing you to peer inside your active processes, their threads, and the environment to get
a clearer understanding about what is actually going on Advanced and detailed use of this tool, along
with the entire SysInternals Suite of Tools, should be required for all developers
In Figure B-19, I’m looking at the properties dialog box of an application running under the Visual Studio
2008 Web Server while a debugging session in process I can see the process tree, the DLLs loaded into
the Web server’s process, their versions, and their paths, making this an excellent tool for debugging
assembly loading and versioning issues
Figure B-19
Trang 10Summar y
Having the right tools can mean the difference between a week of time spent in your head against the
wall versus five minutes of quick analysis in debugging The right tool can mean the difference between
a tedious and keyboard-heavy code slogging or refactoring session that is actually pleasant I encourage you to try each of the tools listed here as well as to explore the ecosystem of available tools to find those that make your development experience not just more productive but more enjoyable