Cover image for Windows Developer Power Tools

Book description

Software developers need to work harder and harder to bring valueto their development process in order to build high qualityapplications and remain competitive. Developers can accomplish thisby improving their productivity, quickly solving problems, andwriting better code.

A wealth of open source and free software tools are availablefor developers who want to improve the way they create, build,deploy, and use software. Tools, components, and frameworks existto help developers at every point in the development process.Windows Developer Power Tools offers an encyclopedic guideto more than 170 of these free tools to help developers buildtop-notch Windows software from desktop applications to webservices.

To help you choose the right tools for solving both common anduncommon problems you face each day, this book follows a uniquetask-oriented organization, laying out topics in the same orderthat you and your team are likely to encounter them as you work ona project. Each tool entry features a solid introduction -- a miniuser's guide -- so you can get up to speed quickly and understandhow to best use the tool in your environment. Inside, you'llfind:

  • A guide to more than 170 tools covering 24 unique aspects ofWindows and .NET software development, with many descriptionscontributed by the tools' authors

  • Descriptions of freely available ASP.NET and Windows Formscontrols, object relational mapping systems, testing frameworks,and build and continuous integration tools

  • Articles on tools to help developers troubleshoot misbehavingapplications

  • Guides for utilities to boost productivity in the developmentenvironment as well as speeding up tasks in Windows itself

  • "Quick pick" lists at the start of each chapter to help youfind and choose the right tool for your task

  • "At a Glance" and "In a Nutshell" summaries to help readersmore quickly narrow their options

  • References to an online book site to keep you up-to-date withnew releases and features

  • Forewords by Mike Gunderloy (Larkware) and Scott Hanselman(http://www.hanselman.com/tools), operators of the two most populartools sites for Microsoft developers.

  • Also, plenty of links in each article point you to additionaldetail online if you wish to delve more deeply into features andfunctionality. This one-stop resource covers a wide range of opensource and freeware tools to help you answer questions aroundplanning, developing, testing, and rolling out great software. Bestof all, they're free.

  • Table of Contents

    1. Windows Developer Power Tools
    2. Foreword
    3. Credits
      1. About the Authors
      2. Contributors
    4. Preface
      1. Why a Book About Tools?
      2. Why a Book About Freeware and Open Source Tools?
      3. But Doesn’t Visual Studio Team System Handle All This?
      4. About Open Source Licenses
      5. About This Book
      6. Audience
      7. Assumptions This Book Makes
      8. Contents of This Book
        1. Part I: Writing Code
        2. Part II: Checking Code
        3. Part III: Running a Development Project
        4. Part IV: Troubleshooting Code and Applications
        5. Part V: Code Tools
        6. Part VI: Working with Databases
        7. Part VII: Miscellaneous
        8. Part VIII: Appendix
      9. The Book’s Companion Web Site
      10. Conventions Used in This Book
      11. Using Code Examples
      12. Comments and Questions
      13. Safari® Enabled
      14. Acknowledgments
        1. From the Authors
        2. From James Avery
        3. From Jim Holmes
    5. I. Writing Code
      1. 1. Building ASP.NET Applications
        1. 1.0 Introduction
        2. 1.1 Building Sophisticated Ajax Applications with ASP.NET Atlas
          1. Getting Started
          2. Using Atlas
            1. Rendering partial page updates
            2. Optimizing partial page updates
            3. Fetching data from web services
            4. Working with the client-side component model
          3. Getting Support
        3. 1.2 Adding Ajax Functionality with Anthem.NET
          1. Getting Started
          2. Using Anthem.NET
          3. Getting Support
        4. 1.3 Adding Ajax Functionality with Ajax.NET Professional
          1. Getting Started
          2. Using Ajax.NET
          3. Getting Support
        5. 1.4 Generating User-Friendly URLs with UrlRewritingNet.UrlRewrite
          1. Getting Started
          2. Using URLRewritingNet.UrlRewrite
          3. Getting Support
        6. 1.5 Showing a “Please Wait” Dialog with BusyBoxDotNet
          1. Getting Started
          2. Using BusyBoxDotNet
            1. Adding the BusyBox control to a web form
            2. Testing BusyBox
            3. Customizing BusyBox
            4. Displaying the BusyBox manually
            5. Choosing where to show the BusyBox
            6. Further personalizing a BusyBox
          3. Getting Support
        7. 1.6 Creating Cleaner HTML Output with CSS Friendly Control Adapters
          1. Getting Started
          2. Using the Custom Adapters
          3. Getting Support
        8. 1.7 Adding Word-Processing Capabilities to Your Application with FreeTextBox
          1. Getting Started
          2. Using FreeTextBox
          3. Getting Support
        9. 1.8 Creating Charts with the WebChart Control
          1. Getting Started
          2. Using WebChart
          3. Getting Support
        10. 1.9 Consuming and Publishing RSS Feeds with the RSS Toolkit
          1. Getting Started
          2. Using the RSS Toolkit
            1. Creating an RSS feed
            2. Consuming RSS feeds with the RSS Toolkit
          3. Getting Support
        11. 1.10 For More Information
      2. 2. Working with Windows Forms
        1. 2.0 Introduction
        2. 2.1 Getting “That WinXP Look” with XP Common Controls
          1. Getting Started
          2. Using XP Common Controls
            1. Rolling out new controls
            2. Understanding theming
            3. Working with Provider Components
            4. Implementing list controls
            5. Using the login controls
          3. Getting Support
        3. 2.2 Creating Dockable Windows with DockPanel Suite
          1. Getting Started
          2. Using DockPanel Suite
            1. Creating a dockable application
          3. Getting Support
        4. 2.3 Creating a Professional User Interface with Krypton Toolkit
          1. Getting Started
          2. Using Krypton Toolkit
            1. Building a three-pane application
            2. Expanding groups
          3. Getting Support
        5. 2.4 Learning More About Windows Controls with Control Spy
          1. Getting Started
          2. Using ControlSpy
            1. Working with styles
            2. Examining messages and notifications
          3. Getting Support
        6. 2.5 For More Information
      3. 3. Developing in .NET 3.0 (a.k.a. “WinFx”)
        1. 3.0 Introduction
        2. 3.1 Creating Great Visuals for Your Applications with Expression Graphic Designer
          1. Getting Started
          2. Using Expression Graphic Designer
            1. Creating images
            2. Painting pixel layers
            3. Painting vector layers
            4. Exploring other features
            5. Exporting features
          3. Getting Support
        3. 3.2 Creating WinFx User Interfaces Without Code Using Interactive Designer
          1. Getting Started
          2. Using Interactive Designer
            1. Customizing the look of a control
            2. Breaking down and creating a user interface
            3. Exploring other features
          3. Getting Support
        4. 3.3 Writing XAML in XamlPad
          1. Getting Started
          2. Using XamlPad
          3. Getting Support
        5. 3.4 Avoiding XML Configuration Files with the Service Configuration Editor
          1. Getting Started
          2. Using the Service Configuration Editor
            1. Creating a WCF service
            2. Creating a service host project
            3. Using the wizards to configure a service
            4. Creating a client to consume the service
            5. Extending your service’s configuration
          3. Getting Support
        6. 3.5 Deciphering WCF Logs with the Service Trace Viewer
          1. Getting Started
          2. Using the Service Trace Viewer
            1. Configuring endpoint logging
            2. Working with the viewer
          3. Getting Support
        7. 3.6 Developing WinFx Applications in Visual Studio with Development Tools for WinFx
          1. Getting Started
          2. Using the Development Tools for WinFx
            1. Finding the new controls in the toolbox
            2. Exploring the new Visual Designer
            3. Editing XAML
          3. Getting Support
        8. 3.7 For More Information
      4. 4. Working with Code Libraries
        1. 4.0 Introduction
        2. 4.1 Externalizing Business Rules with NxBRE
          1. Getting Started
          2. Using NxBRE
            1. Creating rule bases for the Flow Engine
            2. Creating rules for the Inference Engine
            3. Implementing the engine
          3. Getting Support
        3. 4.2 Diagnosing Without Downtime via log4net
          1. Getting Started
            1. Step 1: Referencing the assembly
            2. Step 2: Configuring log4net
            3. Step 3: Initializing logging within the application
            4. Step 4: Adding logging messages to the code
          2. Using log4net
            1. Configuring log4net
            2. Managing performance
            3. Managing context
          3. Getting Support
        4. 4.3 Searching Your Data Using Lucene.Net
          1. Getting Started
          2. Using Lucene.Net
            1. Creating an index
              1. Understanding analyzers
              2. Understanding the role of the IndexWriter
            2. Adding data to a document
              1. Running the IndexFiles application
            3. Searching an index
              1. Understanding searchers
              2. Using analyzers in searching
              3. Revisiting documents
              4. Parsing user input with QueryParser
              5. Working with search hits
            4. Running the SearchFiles application
          3. Getting Support
        5. 4.4 Finding Changes Between Assembly Versions with LibCheck
          1. Getting Started
          2. Using LibCheck
            1. Generating store files
            2. Generating the churn report
            3. Analyzing the churn report
            4. LibCheck options
          3. Getting Support
        6. 4.5 Comparing Assemblies with Reflector.Diff
          1. Getting Started
          2. Using Reflector.Diff
            1. Exporting the results
            2. Selecting your own assemblies
            3. Modifying the options
          3. Getting Support
        7. 4.6 Implementing Spell Checking in Your Windows and Web Apps with NetSpell
          1. Getting Started
          2. Using NetSpell
          3. Getting Support
        8. 4.7 Creating Graphs and Plot Charts Quickly with NPlot
          1. Getting Started
          2. Using NPlot
            1. Plots and drawable objects
            2. Specifying data
              1. Axes
            3. Producing graphs from data sources
          3. Getting Support
        9. 4.8 Sorting Algorithms in C# with NSort
          1. Getting Started
          2. Using NSort
          3. Getting Support
        10. 4.9 Creating RSS Feeds with RSS.NET
          1. Getting Started
          2. Using RSS.NET
            1. Creating an RSS feed
            2. Reading RSS feeds with RSS.NET
          3. Getting Support
        11. 4.10 Using Zip, GZip, Tar, and BZip2 Archives in Your Software with SharpZipLib
          1. Getting Started
          2. Using SharpZipLib
          3. Getting Support
        12. 4.11 Generating Excel Files from Code Using ExcelXmlWriter (Without Having Excel!)
          1. Getting Started
          2. Using ExcelXmlWriter
          3. Getting Support
        13. 4.12 Creating PDFs with iTextSharp
          1. Getting Started
          2. Using iTextSharp
            1. Manipulating PDFs with iTextSharp
          3. Getting Support
        14. 4.13 For More Information
      5. 5. Generating Code
        1. 5.0 Introduction
        2. 5.1 Creating Code Automatically with MyGeneration
          1. Getting Started
          2. Using MyGeneration
            1. Creating MyGeneration templates
            2. Templating code for user input
            3. Using MyMeta, the generic database metadata API
            4. Browsing and updating templates
          3. Getting Support
        3. 5.2 Generating Your Data-Access Layer with Codus
          1. Getting Started
          2. Using Codus
          3. Getting Support
        4. 5.3 Writing Your Web Services Contract First with WSCF
          1. Getting Started
          2. Using WSCF
            1. Generating a server-side stub
            2. Generating the client-side proxy
            3. Integrating WSCF into your build process
          3. Getting Support
        5. 5.4 Generating XML Schemas and Strongly Typed DataSets with XSD.exe
          1. Getting Started
          2. Using XSD
            1. Creating a strongly typed dataset
            2. Generating XSD from class definitions
          3. Getting Support
        6. 5.5 Practicing Contract-First XML Development with XSDObjectGenerator
          1. Getting Started
          2. Using XSDObjectGenerator
            1. XSDObjectGenerator versus XSD.exe
            2. Generating code
          3. Getting Support
        7. 5.6 For More Information
      6. 6. Writing Code
        1. 6.0 Introduction
        2. 6.1 Building .NET Applications with Visual Studio Express
          1. Getting Started
          2. Using Visual Studio Express
            1. Using the Windows Forms designers and controls
            2. Working with menus and toolbars (Visual Basic, C#, C++, J#)
              1. Implementing common Windows dialogs (Visual Basic, C#, C++, J#)
              2. Leveraging templates (Visual Basic, C#)
              3. Handling events (Visual Basic, C#, C++, J#)
            3. Editing code in Visual Studio Express
              1. Making use of IntelliSense code snippets (Visual Basic, C#)
              2. Speeding development with My (Visual Basic)
              3. Refactoring (Visual Basic, C#)
              4. Using the Surround With feature (C#) to speed try/catch writing
              5. Generating method stubs (C#)
              6. Automatically creating using statements (C#)
            4. Debugging your application
              1. Fixing errors with AutoCorrect (Visual Basic)
              2. Speeding troubleshooting with the Exception Assistant (Visual Basic, C#, C++, J#)
              3. Editing during debugging with Edit and Continue (Visual Basic, C#, C++)
              4. Debugger visualizers (Visual Basic, C#, C++, J#)
            5. ClickOnce deployment (Visual Basic, C#, C++, J#)
          3. Getting Support
        3. 6.2 Developing .NET Applications Using SharpDevelop
          1. Getting Started
          2. Using SharpDevelop
            1. Unit testing
            2. Checking code coverage
            3. Converting code between languages
            4. Targeting different .NET Frameworks
            5. Building cross-platform development applications
            6. Creating and running NAnt build scripts
            7. Finding and inserting PInvoke signatures
            8. Testing regular expressions
            9. Previewing and generating documentation
            10. SharpDevelop versus Visual Studio Express
          3. Getting Support
        4. 6.3 Writing Mono Applications on Linux and Mac OS X with MonoDevelop
          1. Getting Started
          2. Using MonoDevelop
            1. Using code completion
            2. NUnit integration
          3. Getting Support
        5. 6.4 Creating Standalone Snippets with Snippet Compiler
          1. Getting Started
          2. Using Snippet Compiler
          3. Getting Support
        6. 6.5 Handling Small Tasks with Notepad2
          1. Getting Started
          2. Using Notepad2
          3. Getting Support
        7. 6.6 Mastering Regular Expressions with the Regulator
          1. Getting Started
          2. Using the Regulator
            1. Validating a simple filename
            2. Generating source code
            3. Finding patterns online
          3. Getting Support
        8. 6.7 Creating Regular Expressions with ReguLazy
          1. Getting Started
          2. Using ReguLazy
            1. Parsing a simple logfile with ReguLazy’s help
            2. Looking at the raw expression
            3. The matches tree
            4. Naming parts of your match
            5. Setting regex matching options
            6. Generating code from the new pattern
            7. Selection helpers
          3. Getting Support
        9. 6.8 For More Information
      7. 7. Creating Documentation
        1. 7.0 Introduction
        2. 7.1 Documenting Your Source Code with GhostDoc
          1. Getting Started
          2. Using GhostDoc
            1. Documenting inherited classes and overridden methods
            2. Documenting when there’s no inheritance or overrides
            3. Documenting methods with single-word names
            4. Documenting an indexer
            5. Documenting a method with “of the” reordering for method and parameter names
            6. Updating documentation
            7. Customizing GhostDoc
          3. Getting Support
        3. 7.2 Viewing Documentation in Visual Studio with CR_Documentor
          1. Getting Started
          2. Using CR_Documentor
          3. Getting Support
        4. 7.3 Creating Professional Documentation with NDoc
          1. Getting Started
          2. Using NDoc
          3. Getting Support
        5. 7.4 Printing PDF Documents with PDFCreator
          1. Getting Started
          2. Using PDFCreator
            1. Printing other output formats
            2. Using other PDFCreator features
          3. Getting Support
        6. 7.5 Building a FAQ with skmFAQs
          1. Getting Started
          2. Using skmFAQs
            1. Working with FAQs
          3. Getting Support
        7. 7.6 For More Information
      8. 8. Enhancing Visual Studio
        1. 8.0 Introduction
        2. 8.1 Boosting Productivity with CoolCommands
          1. Getting Started
          2. Using CoolCommands
            1. Working in the Solution Explorer
            2. Exploring editor enhancements
            3. Locating an open file
          3. Getting Support
        3. 8.2 Improving Visual Studio’s Designers with the PowerToy for Class and Distributed Systems Designers
          1. Getting Started
          2. Using the PowerToy for Class and Distributed Systems Designers
            1. Working better in the Class Designer
          3. Getting Support
        4. 8.3 Opening Files Quickly with VSFileFinder
          1. Getting Started
          2. Using VSFileFinder
          3. Getting Support
        5. 8.4 Mastering Unmanaged APIs with PINVOKE.NET
          1. Getting Started
          2. Using PINVOKE.NET
            1. Editing content
            2. Adding content
            3. Working with the Visual Studio add-in
          3. Getting Support
        6. 8.5 Spell Checking ASP.NET and HTML with the HTML/ASP.NET Spell Checker Add-in
          1. Getting Started
          2. Using the Spell Checker
            1. Proofing multiple pages
            2. Working with XML files
            3. Customizing the Spell Checker’s behavior
            4. Using the Spell Checker with custom web controls
          3. Getting Support
        7. 8.6 Switching Window Layouts Quickly with VSWindowManager
          1. Getting Started
          2. Using VSWindowManager
          3. Getting Support
        8. 8.7 Blogging or Emailing Your Code in Style with the CopySourceAsHtml Visual Studio Add-in
          1. Getting Started
          2. Using CopySourceAsHtml
          3. Getting Support
        9. 8.8 Editing CSS in Visual Studio with the CSS Properties Window
          1. Getting Started
          2. Using the CSS Properties Window
          3. Getting Support
        10. 8.9 Bringing Web Application Projects Back to Visual Studio 2005
          1. Getting Started
          2. Using Web Application Projects
          3. Getting Support
        11. 8.10 Sharing Your Visual Studio Goodies with the Content Installer Power Toys
          1. Getting Started
          2. Using the Visual Studio Content Installer Power Toys
          3. Getting Support
        12. 8.11 For More Information
    6. II. Checking Code
      1. 9. Analyzing Your Code
        1. 9.0 Introduction
        2. 9.1 Checking Complexity and Dependencies with Peli’s Reflector Addins
          1. Getting Started
          2. Using Reflector.Graph
          3. Using Reflector.CodeMetrics
          4. Getting Support
        3. 9.2 Checking Your Source Code’s Complexity with SourceMonitor
          1. Getting Started
          2. Using SourceMonitor
            1. Using the metrics
            2. Running SourceMonitor via the command line
          3. Getting Support
        4. 9.3 Analyzing Code Inside Visual Studio with CR_Metrics
          1. Getting Started
          2. Using CR_Metrics
          3. Getting Support
        5. 9.4 Finding Your Code’s Dependency Complexities with NDepend
          1. Getting Started
          2. Using NDepend
            1. Interpreting NDepend’s report
            2. Visually browsing your metrics
            3. Wrapping NDepend into automated processes
          3. Getting Support
        6. 9.5 Writing Better Code with FxCop
          1. Getting Started
          2. Using FxCop
            1. Analyzing your assemblies
            2. Clearing failure messages
            3. Looking at the rules
            4. Running FxCop from the command line
            5. Examining the results
          3. Getting Support
        7. 9.6 For More Information
      2. 10. Testing Your Software
        1. 10.0 Introduction
        2. 10.1 Unit Testing Your Code with NUnit
          1. Getting Started
          2. Using NUnit
            1. Testing assertions
            2. Testing for thrown exceptions
            3. Initializing and cleaning up objects for testing
            4. Disabling and tracking problem tests
            5. Using hierarchies of test classes to organize your tests
            6. Running tests from more than one assembly
            7. Testing code that requires config files
            8. Grouping tests by custom criteria
            9. Extending NUnit with your own assertions
            10. Running tests from the command line
            11. Running tests in NAnt
            12. Wrapping into your continuous integration process
          3. Getting Support
        3. 10.2 Speeding Your Test Development with NUnit Code Snippets
          1. Getting Started
          2. Using NUnit Code Snippets for Visual Studio 2005
          3. Getting Support
        4. 10.3 Writing Advanced Unit Tests with MbUnit
          1. Getting Started
          2. Using MbUnit
            1. Performing data-driven testing
            2. Performing matrix-based tests
            3. Testing multiple instances of a type
            4. Using other advanced MbUnit features
          3. Getting Support
        5. 10.4 Getting More from Your Tests with Zanebug
          1. Getting Started
          2. Using Zanebug
          3. Getting Support
        6. 10.5 Bringing Your Customers into the Testing Process with FitNesse
          1. Getting Started
          2. Using FitNesse
            1. Configuring FitNesse for .NET
            2. Building a test project with FitNesse
            3. Testing a user’s login
            4. Creating the login test
            5. Saving time with FitNesse
          3. Getting Support
        7. 10.6 Analyzing Unit-Test Coverage with NCover
          1. Getting Started
          2. Using NCover
            1. Monitoring a program’s execution with NCover
            2. Tracking program flow with sequence points
            3. Integrating NCover into your build process
            4. Integrating NCover with NUnit
          3. Getting Support
        8. 10.7 Analyzing Code Coverage with NCoverExplorer
          1. Getting Started
          2. Using NCoverExplorer
            1. Excluding portions of the coverage
            2. Filtering coverage
            3. Customizing the test coverage view
            4. Generating summary reports of test coverage
            5. Integrating NCoverExplorer into your build process
              1. Integrating NCoverExplorer with NAnt
              2. Integrating NCoverExplorer with MSBuild
              3. Integrating NCoverExplorer with CruiseControl.NET
          3. Getting Support
        9. 10.8 Integrating Unit Testing into Visual Studio with TestDriven.NET
          1. Getting Started
          2. UsingTestDriven.NET
            1. Debugging with TestDriven.NET
            2. Calculating code coverage with TestDriven.NET
            3. Testing your code on .NET 1.1
            4. Performing ad-hoc testing
          3. Getting Support
        10. 10.9 Integrating Mock Objects into Your Testing with NMock 2.0
          1. Getting Started
          2. Using NMock 2.0
            1. Generating a dynamic mock object
            2. Using a stub to test code with predefined values
            3. Using a dynamic mock object to test an external system
          3. Getting Support
        11. 10.10 Creating Strongly Typed Mocks with Rhino.Mocks
          1. Getting Started
          2. Using Rhino.Mocks
            1. Creating strongly typed mock objects
            2. Testing generic types
          3. Getting Support
        12. 10.11 Unit Testing Your GUI with NUnitForms
          1. Getting Started
          2. Using NUnitForms
            1. Testing a simple form with controls
            2. Testing a custom control with mouse events
          3. Getting Support
        13. 10.12 Creating Performance Benchmark Tests with NTime
          1. Getting Started
          2. Using NTime
          3. Getting Support
        14. 10.13 Automating Web Application Testing with Selenium Core
          1. Getting Started
          2. Using Selenium
            1. Creating a Selenium test suite
            2. Testing an invalid login
            3. Writing a valid login test
            4. Writing a test suite
            5. Running a test suite
            6. Additional Selenium functionality
          3. Getting Support
        15. 10.14 Driving Your Web Applications Automatically with Watir
          1. Getting Started
          2. Using Watir
            1. Creating a Watir test script
            2. Improving your test scripts using Ruby
            3. Running scripts from the command line
          3. Getting Support
        16. 10.15 For More Information
    7. III. Writing Code
      1. 11. Working with Source-Control Systems
        1. 11.0 Introduction
        2. 11.1 Setting Up Subversion Rapidly with SVN 1-Click Setup
          1. Getting Started
          2. Using SVN 1-Click Setup
            1. Installing Subversion
            2. Configuring the repository
            3. Installing TortoiseSVN
          3. Getting Support
        3. 11.2 Accessing Subversion and CVS with TortoiseCVS and TortoiseSVN
          1. Getting Started
          2. Using TortoiseCVS
            1. Setting up a secure connection to CVS
            2. Configuring an SSH key for authentication
            3. Managing the workflow of a project
            4. Renaming files and folders
            5. Tagging, branching, and merging
          3. Using Tortoise SVN
            1. Managing the workflow with TortoiseSVN
            2. Renaming files and directories
            3. Tagging, branching, and merging
            4. Merging a set of revisions
            5. Merging two trees
          4. Getting Support
        4. 11.3 Using Subversion Inside Visual Studio with AnkhSVN
          1. Getting Started
          2. Using AnkhSVN
            1. Adding a solution to Subversion
            2. Working with files in the Solution Explorer
          3. Getting Support
        5. 11.4 Removing Visual Source Safe Bindings with SourceSafe Binding Remover
          1. Getting Started
          2. Using SourceSafe Binding Remover
          3. Getting Support
        6. 11.5 Comparing Files with WinMerge
          1. Getting Started
          2. Using WinMerge
            1. Using WinMerge with TortoiseSVN
          3. Getting Support
        7. 11.6 For More Information
      2. 12. Building, Using Continuous Integration on, and Deploying Your Applications
        1. 12.0 Introduction
        2. 12.1 Creating Consistent Builds with NAnt
          1. Getting Started
          2. Using NAnt
            1. Working with build files
            2. Building your software
            3. Running your tests
            4. Creating documentation
            5. Exploring other helpful features in NAnt
          3. Getting Support
        3. 12.2 Automating Your Build Process with MSBuild
          1. Getting Started
          2. Using MSBuild
            1. Passing information to and from targets
            2. Working with properties in MSBuild
            3. Controlling your build by overriding targets
            4. Adding steps to your build
            5. Implementing continuous integration in Visual Studio
          3. Getting Support
        4. 12.3 Building .NET 1.1 Assemblies in MSBuild with MSBee
          1. Getting Started
          2. Using MSBee
            1. Building Visual Studio projects with MSBee
            2. Conditionally compiling .NET 1.1 code
            3. Controlling the assembly’s output path
          3. Getting Support
        5. 12.4 Extending MSBuild Capabilities with MSBuild Community Tasks
          1. Getting Started
          2. Using MSBuild Community Tasks
          3. Getting Support
        6. 12.5 Managing Your Build Process Visually with MSBuild Sidekick
          1. Getting Started
          2. Using MSBuild Sidekick
            1. Adding items to the build process
            2. Working with targets
              1. Defining dependencies between targets
              2. Adding a default task
              3. Configuring a custom task
            3. Previewing your build file
            4. Editing an existing MSBuild project
            5. Working with Team Foundation Server build types
          3. Getting Support
        7. 12.6 Shortening the Development Cycle with CruiseControl.NET
          1. Getting Started
          2. Using CruiseControl.NET
            1. Configuring CCNET
            2. Hooking into your source control
            3. Building your system with NAnt
            4. Using CCTray
            5. Viewing task outputs via CCNET’s dashboard
            6. Wiring in unit testing and code coverage
            7. Refining your process with other CCNET features
            8. Extending CCNET
          3. Getting Support
        8. 12.7 Easing the Burden of Implementing a Continuous Integration Process with CI Factory
          1. Getting Started
            1. Tailoring the installer
            2. Installing a new CI server
          2. Using CI Factory
            1. Initiating the CI process
            2. Versioning your assemblies
            3. Enhancing your CI server’s process with new packages
          3. Getting Support
        9. 12.8 Simplifying Web Application Deployments with Unleash It
          1. Getting Started
          2. Using Unleash It
            1. Profiling configuration options
            2. Deploying with a single profile
            3. Deploying with multiple profiles
            4. Extending Unleash It with plug-ins
            5. Running Unleash It inside Visual Studio 2003
            6. Running Unleash IT from the command line
          3. Getting Support
        10. 12.9 Easing Web Application Deployments with Web Deployment Projects
          1. Getting Started
          2. Using Web Deployment Projects
          3. Getting Support
        11. 12.10 Creating a Setup Project with WiX
          1. Getting Started
          2. Using WiX
            1. Integrating WiX into the Visual Studio IDE
          3. Getting Support
        12. 12.11 For More Information
      3. 13. Boosting Team Collaboration
        1. 13.0 Introduction
        2. 13.1 Improving Team Communication and Collaboration with Basecamp
          1. Getting Started
          2. Using Basecamp
            1. Starting out in the Overview area
            2. Writing messages in the Messages area
            3. Tracking task lists in the To-Do area
            4. Tracking project status in the Milestones area
            5. Creating documents in the Writeboards area
            6. Developing custom applications or tasks with Basecamp’s API
          3. Getting Support
        3. 13.2 Building Online Communities with Community Server
          1. Getting Started
          2. Using Community Server
            1. Managing site content
            2. Organizing content with tags
            3. Supporting member blogs
            4. Mirroring blogs
            5. Creating and managing user forums
            6. Searching a site
            7. Considering the commercial editions
          3. Getting Support
        4. 13.3 Creating a Blog with Subtext
          1. Getting Started
          2. Using Subtext
            1. Posting to a blog
            2. Adding RSS feeds to a blog
            3. Adding a comments section to a blog
            4. Accepting trackbacks and pingbacks
          3. Getting Support
        5. 13.4 Collaborating Online with FlexWiki
          1. Getting Started
          2. Using FlexWiki
            1. Editing a Wiki page
            2. Adding pages to a Wiki
            3. Subscribing to a Wiki with RSS
          3. Getting Support
        6. 13.5 Driving Another PC Remotely via XP’s Remote Assistance
          1. Getting Started
          2. Using Remote Assistance
            1. Requesting assistance using Instant Messenger
            2. Requesting assistance via email
            3. Working with the remote expert
            4. Taking control as the expert
          3. Getting Support
        7. 13.6 Talking to Colleagues with Skype
          1. Getting Started
          2. Using Skype
            1. Creating an account
            2. Adding contacts
            3. Making a call
            4. Setting up and running a conference call
            5. Setting up and running a video call
            6. Using instant messenger capabilities
          3. Getting Support
        8. 13.7 Chatting with Anyone Using GAIM
          1. Getting Started
          2. Using GAIM
          3. Getting Support
        9. 13.8 Administering Team Foundation Users with the TFS Administration Tool
          1. Getting Started
          2. Using the TFS Administration Tool
            1. Adding a new user
            2. Editing user permissions
            3. Deleting a user
            4. Applying changes
            5. Reading logs
            6. Working with RoleConfig.xml
          3. Getting Support
        10. 13.9 For More Information
      4. 14. Tracking Bugs, Changes, and Other Issues
        1. 14.0 Introduction
        2. 14.1 Implementing a Bare-Bones Defect Tracker with BugTracker.NET
          1. Getting Started
          2. Using BugTracker.NET
            1. Filing reports
            2. Using screenshots
          3. Getting Support
        3. 14.2 Handling Mid-Sized Projects with CodeTrack
          1. Getting Started
          2. Using CodeTrack
            1. Creating a project
            2. Creating a bug report
            3. Working with CodeTrack reports
            4. Creating reports
          3. Getting Support
        4. 14.3 Running an Enterprise-Level Bug-Tracking System with Bugzilla
          1. Getting Started
          2. Using Bugzilla
            1. Basics of a bug
            2. Filing a bug report
            3. Moving bugs through the system
            4. Extending Bugzilla with add-ons
          3. Getting Support
        5. 14.4 Managing a Project with Trac
          1. Getting Started
          2. Using Trac
            1. Keeping track of issues
            2. Seeing what’s going on in the repository
            3. Using timelines, milestones, and the project roadmap
            4. Getting reports
          3. Getting Support
        6. 14.5 For More Information
    8. IV. Troubleshooting Code and Applications
      1. 15. Troubleshooting and Debugging
        1. 15.0 Introduction
        2. 15.1 Monitoring File Access in Your System with Filemon
          1. Geting Started
          2. Using Filemon
          3. Getting Support
        3. 15.2 Identifying TCP Port and Endpoint Issues with TCPView
          1. Getting Started
          2. Using TCPView
          3. Getting Support
        4. 15.3 Seeing What’s Being Accessed in Your Registry with Regmon
          1. Getting Started
          2. Using Regmon
          3. Getting Support
        5. 15.4 Getting a Better View of Processes on Your System with Process Explorer
          1. Getting Started
          2. Using Process Explorer
            1. Finding and resolving access-violation problems
            2. Finding the components a file requires to execute
          3. Getting Support
        6. 15.5 Digging into Your Program’s CLR Interactions with PInvoke and COM Using CLR SPY
          1. Getting Started
          2. Using CLR SPY
            1. Finding problems with error probes
              1. Detecting and avoiding PInvoke calling convention mismatches
              2. Monitoring object lifespans during transitions
              3. Detecting invalid COM wrappers with Invalid IUnknown and Invalid VARIANT
            2. Forcing nondeterministic failures
              1. Detecting garbage-collection issues with the Object Not Kept Alive probe
              2. Catching buffer errors using the Buffer Overrun probe
            3. Using the warning probes
              1. Finding marshaling errors with the Disconnected Context and Unmarshalable Interface probes
              2. Detecting stale thread metadata with the Thread Changing Apartment State probe
              3. Isolating context-marshaling problems with the QueryInterface Failure probe
            4. Tracking down problem sources with informational probes
              1. Filtering messages in the Marshaling Filter pane
          3. Getting Support
        7. 15.6 Tracking Down Memory-Allocation Problems with CLR Profiler
          1. Getting Started
          2. Using CLR Profiler
            1. Gathering data with CLR Profiler
            2. Delving into CLR Profiler’s metrics
            3. Isolating problems using CLR Profiler
          3. Getting Support
        8. 15.7 Debugging Your Application After It’s Been Deployed with ClrDump
          1. Getting Started
          2. Using ClrDump
            1. Creating small managed minidumps
            2. Enforcing your error-handling policy
            3. Using ClrDump’s functionality in your software
            4. Using clrdump.exe to generate a minidump
            5. Analyzing a minidump
          3. Getting Support
        9. 15.8 Debugging Hangs and Monitoring Processes with Managed Stack Explorer
          1. Getting Started
          2. Using Managed Stack Explorer
            1. Getting information about a process
            2. Auto-refreshing thread lists and stack traces
            3. Periodically logging stack traces
            4. Running MSE from the command line
          3. Getting Support
        10. 15.9 Examining HTTP Traffic with Fiddler
          1. Getting Started
          2. Using Fiddler
            1. Debugging client/server applications
            2. Crafting your own requests
            3. Tweaking the performance of web applications
          3. Getting Support
        11. 15.10 Identifying Network Problems with PingPlotter Freeware
          1. Getting Started
          2. Using PingPlotter
          3. Getting Support
        12. 15.11 Examining Logs with LogParser
          1. Getting Started
          2. Using LogParser
            1. Specifying input formats
            2. Specifying output formats
            3. Constructing queries
            4. Using the command-line executable
            5. Using the COM-scriptable interface
          3. Getting Support
        13. 15.12 Simplifying Debugging with Visual Studio 2005 Visualizers
          1. Getting Started
          2. Using Visualizers
            1. Visualizing Regular Expressions with the Regex Kit Visualizers for Visual Studio 2005
            2. Visualizing the ASP.NET Cache
            3. Visualizing XML
          3. Getting Support
        14. 15.13 Finding Bottlenecks with NProf
          1. Getting Started
          2. Using NProf
          3. Getting Support
        15. 15.14 For More Information
      2. 16. Using Decompilers and Obfuscators
        1. 16.0 Introduction
        2. 16.1 Examining Common Ground with ILDASM
          1. Getting Started
            1. Adding ILDASM to your Send To menu
            2. Adding ILDASM to Visual Studio
          2. Using ILDASM
            1. Analyzing and understanding differences
            2. Using ILDASM to analyze assemblies you didn’t write
          3. Getting Support
        3. 16.2 Analyzing Assemblies with Reflector
          1. Getting Started
          2. Using Reflector
            1. Browsing assemblies
            2. Analyzing interactions
            3. Finding help
            4. Searching assemblies
            5. Doing the disassembly thing
            6. Extending Reflector
          3. Getting Support
        4. 16.3 Debugging .NET Assemblies Without Source Code Using Dotnet IL Editor
          1. Getting Started
          2. Using DILE
            1. Setting DILE’s options
            2. Working with assemblies in the project
            3. Debugging .NET assemblies
            4. Debugging a dynamic assembly
          3. Getting Support
        5. 16.4 Preventing Reverse-Engineering of Your Code with Dotfuscator
          1. Getting Started
          2. Using Dotfuscator
            1. Obfuscating a simple application
            2. Creating a new Dotfuscator project
          3. Getting Support
        6. 16.5 For More Information
    9. V. Code Tools
      1. 17. Tightening Up Your Security
        1. 17.0 Introduction
        2. 17.1 Analyzing Threats Your Application Faces with the Threat Analysis & Modeling Tool
          1. Getting Started
          2. Using TAM
            1. Creating a threat model: providing input
            2. Assimilating a threat model: analyzing the output
              1. Using TAM analytics
              2. Using TAM visualizations
              3. Using TAM reports
            3. Extending TAM
            4. Integrating TAM with Microsoft Team Foundation Server (TFS)
          3. Getting Support
        3. 17.2 Protecting Your Communications with the Bouncy Castle Cryptography APIs
          1. Getting Started
          2. Using the Bouncy Castle Cryptography APIs
            1. Encrypting and decrypting a file using a passphrase
            2. Encrypting and decrypting a file using a passphrase, OpenPGP style
          3. Getting Support
        4. 17.3 Mitigating XSS Vulnerabilities with the Anti-Cross Site Scripting Library
          1. Getting Started
          2. Using the Anti-Cross Site Scripting Library
          3. Getting Support
        5. 17.4 Highlighting Explorer Windows’ Security Privileges Using PrivBar
          1. Getting Started
          2. Using PrivBar
          3. Getting Support
        6. 17.5 Opening a Command Window with Admin Privileges Using MakeMeAdmin.cmd
          1. Getting Started
          2. Using MakeMeAdmin.cmd
          3. Getting Support
        7. 17.6 For More Information
      2. 18. Building Your Application on Frameworks
        1. 18.0 Introduction
        2. 18.1 Reusing Professional Infrastructure with Enterprise Library
          1. Getting Started
          2. Using Enterprise Library
            1. Adding Enterprise Library to your solution
            2. Writing your application
            3. Configuring your application
          3. Getting Support
        3. 18.2 Creating Web Applications and Systems with DotNetNuke
          1. Getting Started
          2. Using DotNetNuke
            1. Installing and configuring DotNetNuke
            2. Administering your DotNetNuke sites
            3. Customizing your sites
          3. Getting Support
        4. 18.3 Improving Smart Device Development with the Smart Device Framework
          1. Getting Started
          2. Using the Smart Device Framework
          3. Getting Support
        5. 18.4 Building and Deploying Cross-Platform .NET Applications with Mono
          1. Getting Started
            1. Setup using installation packages
            2. Setup using source
          2. Using Mono
            1. Understanding Mono’s organization
            2. Supporting existing applications
            3. Working in an open source .NET environment
            4. Utilizing other .NET tools in the Mono environment
          3. Getting Support
        6. 18.5 Spelunking the Framework with Rotor
          1. Getting Started
          2. Using Rotor
            1. Examining the distribution’s layout
            2. Peeking into Rotor
              1. Understanding the flow of managed APIs
              2. Transitioning from managed to unmanaged code
              3. Delving deep into the BCL
            3. Using runtime logging to see execution in action
          3. Getting Support
        7. 18.6 Simplifying Web Development with Castle MonoRail
          1. Getting Started
          2. Using Castle MonoRail
            1. Implementing actions with controllers
          3. Getting Support
        8. 18.7 Obtaining a Decoupled Architecture with the Castle Windsor Container
          1. Getting Started
          2. Using the Castle Windsor Container
            1. Registering components with Windsor Containers
            2. Integrating Windsor Container with NHibernate
          3. Getting Support
        9. 18.8 Improving Your Code’s Design and Testability with PicoContainer.NET
          1. Getting Started
          2. Using PicoContainer.NET
            1. Comparing constructor and setter-based Dependency Injection
            2. Working with the component adapters
            3. Using factories for your component adapters
            4. Using parameters in your containers
            5. Using NanoContainer.NET to simplify configuration
          3. Getting Support
        10. 18.9 For More Information
      3. 19. Working with XML
        1. 19.0 Introduction
        2. 19.1 Transforming XML Documents with nxslt2
          1. Getting Started
          2. Using nxslt2
            1. Sending transformations to multiple outputs
            2. Resolving custom URLs
            3. Using extensions
            4. Integrating nxslt2 into IDEs
          3. Getting Support
        3. 19.2 Displaying XML on the Web with eXml
          1. Getting Started
          2. Using eXml
            1. Transforming XML
            2. Exploring eXml’s other capabilities
          3. Getting Support
        4. 19.3 Building Composite XML Documents with XInclude.NET
          1. Getting Started
          2. Using XInclude.NET
          3. Getting Support
        5. 19.4 Referencing Part of an XML Document with XPointer.NET
          1. Getting Started
          2. Using XPointer.NET
            1. Working with XPointer’s other features
          3. Getting Support
        6. 19.5 Extending XSLT Processing with EXSLT.NET
          1. Getting Started
          2. Using EXSLT.NET
            1. Using custom functions via EXSLT.NET’s proprietary extensions
            2. Creating HTML
          3. Getting Support
        7. 19.6 Comparing and Unit Testing XML with XML Diff and Patch
          1. Getting Started
          2. Using XML Diff and Patch
            1. Unit testing XML
            2. Patching XML
          3. Getting Support
        8. 19.7 For More Information
    10. VI. Working with Databases
      1. 20. Interacting with Databases
        1. 20.0 Introduction
        2. 20.1 Finding the Proper Connection String with ConnectionStrings.com
          1. Getting Started
          2. Using ConnectionStrings.com
          3. Getting Support
        3. 20.2 Creating SQL Connection Strings Quickly with SQL Server Connection String Builder
          1. Getting Started
          2. Using SQL Server Connection String Builder
          3. Getting Support
        4. 20.3 Administering SQLite Databases with the SQLite Administrator
          1. Getting Started
          2. Using SQLite Administrator
            1. Creating a database and tables
            2. Creating indexes
            3. Creating views
          3. Getting Support
        5. 20.4 Working with Oracle Inside Visual Studio with Oracle Developer Tools
          1. Getting Started
          2. Using Oracle Developer Tools
            1. Working with tables
            2. Generating code for your database objects
            3. Creating, editing, and testing PL/SQL procedures
          3. Getting Support
        6. 20.5 Managing Oracle Databases with Oracle SQL Developer
          1. Getting Started
          2. Using Oracle SQL Developer
            1. Browsing database objects
            2. Updating, querying, and exporting data
          3. Getting Support
        7. 20.6 For More Information
      2. 21. Exploring Object/Relational Mapping
        1. 21.0 Introduction
        2. 21.1 Mapping Objects to the Database with NHibernate (or How to Stop Writing All That Data-Access Code)
          1. Getting Started
          2. Using NHibernate
            1. Creating the classes
            2. Creating the mapping files
            3. Using the entities
            4. Retrieving records
          3. Getting Support
        3. 21.2 Mapping Business Objects with NPersist
          1. Getting Started
          2. Using NPersist
            1. Creating an Object model
            2. Creating an XML mapping file
            3. Creating, retrieving, updating, and deleting object data
            4. Executing queries
          3. Getting Support
        4. 21.3 Easing the Burden of Creating O/RM Files with ObjectMapper
          1. Getting Started
          2. Using ObjectMapper
            1. Creating files from an existing database
            2. Building the domain model
            3. Doing the UML thing
          3. Getting Support
        5. 21.4 Simplifying Data Access with Castle ActiveRecord
          1. Getting Started
          2. Using Castle ActiveRecord
            1. Working with the framework
            2. Working with classes
            3. Retrieving records
            4. Adding a relationship
          3. Getting Support
        6. 21.5 For More Information
    11. VII. Miscellaneous
      1. 22. Enhancing Web Development
        1. 22.0 Introduction
        2. 22.1 Avoiding Web Headaches with the Web Developer Extension for Firefox
          1. Getting Started
          2. Using the Web Developer Extension
          3. Getting Support
        3. 22.2 Debugging Web Pages with the Web Developer Toolbar for Internet Explorer
          1. Getting Started
          2. Using the Web Developer Toolbar
            1. Navigating through the DOM tree
            2. Getting even more power from the Web Developer Toolbar
          3. Getting Support
        4. 22.3 Diagnosing JavaScript and Ajax with Web Development Helper
          1. Getting Started
          2. Using the Web Development Helper
            1. Debugging scripts
            2. Tracing HTTP traffic
            3. Viewing the HTML Document Object Model
          3. Getting Support
        5. 22.4 Eliminating Memory Leaks in Internet Explorer with Drip
          1. Getting Started
          2. Using Drip
            1. Identifying leaked objects
            2. Watching memory usage over time
            3. Resolving typical leak scenarios
            4. Understanding Drip’s limitations
          3. Getting Support
        6. 22.5 Debugging Web Pages at Runtime with DOM Helper
          1. Getting Started
          2. Using DOM Helper
            1. Troubleshooting with DOM Helper
            2. Editing the CSS
          3. Getting Support
        7. 22.6 Checking Web Pages with the W3C Markup Validation Service
          1. Getting Started
          2. Using the W3C Markup Validation Service
          3. Getting Support
        8. 22.7 Checking Your Web Site’s Accessibility with WebXACT
          1. Getting Started
          2. Using WebXACT
          3. Getting Support
        9. 22.8 Cleaning Up Your HTML with HTML Tidy
          1. Getting Started
          2. Using HTML Tidy
          3. Getting Support
        10. 22.9 For More Information
      2. 23. Boosting Productivity with Windows Utilities
        1. 23.0 Introduction
        2. 23.1 Launching Tools and Web Sites Quickly with SlickRun
          1. Getting Started
          2. Using SlickRun
            1. Creating your own MagicWords
            2. Creating multiple names for a MagicWord
            3. Launching multiple programs with a MagicWord
            4. Taking notes with SlickJot
          3. Getting Support
        3. 23.2 Spotlighting Content in Your Presentations with ZoomIt
          1. Getting Started
          2. Using ZoomIt
          3. Getting Support
        4. 23.3 Getting to the Right Detail with Magnifixer
          1. Getting Started
          2. Using Magnifixer
          3. Getting Support
        5. 23.4 Extracting Files from Windows Installer Packages with Less MSIérables
          1. Getting Started
          2. Using Less MSIérables
            1. Running Less MSIérables from the command line
          3. Getting Support
        6. 23.5 Handling FTP More Efficiently with FileZilla
          1. Getting Started
          2. Using FileZilla
            1. Transferring files to and from an FTP server
            2. Queuing file transfers to and from an FTP server
          3. Getting Support
        7. 23.6 Opening a Shell Where You Need It with Command Prompt Here
          1. Getting Started
          2. Using Command Prompt Here
          3. Getting Support
        8. 23.7 Grabbing Screenshots with Cropper
          1. Getting Started
          2. Using Cropper
          3. Getting Support
        9. 23.8 Grabbing Color Values with ColorMania
          1. Getting Started
          2. Using ColorMania
            1. Creating your own color palette
            2. Grabbing a color from the desktop or an application
            3. Working with color codes
          3. Getting Support
        10. 23.9 Bringing .NET to the Command Line with PowerShell
          1. Getting Started
          2. Using PowerShell
            1. Controlling the behavior of PowerShell cmdlets with ubiquitous parameters
            2. Finding data using shell namespaces
            3. Working with objects
            4. Exploring the environment
            5. Using COM, XML, and external scripts
          3. Getting Support
        11. 23.10 Getting the Most out of PowerShell with PowerShell IDE
          1. Getting Started
          2. Using PowerShell IDE
          3. Getting Support
        12. 23.11 Managing and Switching Tasks with TaskSwitchXP
          1. Getting Started
          2. Using TaskSwitchXP
            1. Closing, minimizing, rearranging, and terminating applications
            2. Stepping through all instances of an application
            3. Hiding applications
          3. Getting Support
        13. 23.12 Keeping Data in Sync with SyncToy
          1. Getting Started
          2. Using SyncToy
          3. Getting Support
        14. 23.13 Resolving Locking Problems with Unlocker
          1. Getting Started
          2. Using Unlocker
          3. Getting Support
        15. 23.14 Bringing POSIX Emulation to Windows with Cygwin
          1. Getting Started
          2. Using Cygwin
            1. Using Unix utilities on Windows
            2. Using symbolic links to work with files
            3. Running ash, bash, tcsh, and ksh scripts
            4. Compiling programs
            5. Building non-Cygwin programs
            6. Building DLLs
            7. Integrating Windows resources
            8. Manipulating Windows facilities with Cygwin
            9. Caveats: Cygwin and Windows native programs
            10. Other Cygwin tools
          3. Getting Support
        16. 23.15 For More Information
    12. VIII. Appendix
      1. A. Common Tasks in Visual Studio
        1. Introduction
        2. Adding a Reference to Your Projects
        3. Adding Tools to the Toolbox
    13. Index
    14. About the Authors
    15. Colophon
    16. Copyright