If you’re a Microsoft .NET Developer and haven’t yet heard of NuGet, you are missing out. NuGet is a Package Management System which allows for simple import, setup and upgrading of Third Party Software Packages. The best thing about NuGet is it isn’t limited to Third Party Software as it is possible to Create Packages and Custom Lists which makes it perfect for sharing code within a Company.

How does NuGet fit into Windows Azure Development?

To be honest, you can definitely do your Windows Azure Development without NuGet. Where the real power of NuGet comes in is the Configuration and Upgrading.

When taking a dependency on a Third Party Component many projects never update to the newer bits of the packages they use. These updated bits could contain important security or service updates which are ignored mostly because it’s too hard to upgrade or fear of breaking changes to their product.

While NuGet doesn’t ultimately mitigate the risk of breaking changes, it does allow for a more controlled upgrade to packages as the manufacturer of the package is handling the update process.

Windows Azure Awesomesauce in NuGet

To get the ball rolling Install NuGet, and execute your first command from the Powershell based Package Manager Console.

Get-Package –Filter Azure –ListAvailable

This Query of Packages in NuGet containing reference to Windows Azure returns 34 Packages which can be used in your upcoming Windows Azure Projects.

My Windows Azure NuGet Package Recommendations

To set the stage here, I have only used a few of these packages in projects, but some of them are definite no brainers when it comes to future projects I work on. Let’s dig in and sweet what has been made much easier for us! [Note: the Headers are the actually installation commands from the Package Management Console]

Install-Package System.Web.Providers

The ASP.NET Universal Providers package is currently in a beta release. These extensions are to provide consistent Provider Support for Membership, Users, Roles, Profile and Session support regardless of Deploying to an On-Premise Server or in the Cloud using Windows Azure.

You can think of System.Web.Providers as the next generation of the original Windows Azure Samples found in Microsoft.Samples.ServiceHosting.AspProviders. The benefit this package will hopefully bring is a fully supported implementation of Role and Membership Management in Windows Azure Table Storage.

Install-Package WindowsAzure.WebRole.MVC3

Since the RTW of ASP.NET MVC 3.0 many developers have been tweeting, and asking questions on the Forums about an MVC3 Supported WebRole in the Windows Azure Tools. This hasn’t been added to the tooling to date, but you now have the ability to create MVC3 enabled Web Roles for your Windows Azure Deployments.

This package takes care of the Copy Local=true issue that many people have run into during their first deployment.

Install-Package WindowsAzure.Caching

Need to use the Windows Azure AppFabric Caching layer for one of your Web Applications? Look no further from this NuGet Package which will download the required Assemblies as well as pre-fill the web.config file to get you well on your way to using Windows Azure AppFabric Caching.

Install-Package CdnHelpers.ASPX

Install-Package EnterpriseLibrary.WindowsAzure.TransientFaultHandling

One of the important things to remember when dealing with Cloud Development is the possibility of failure. This package is a great find for anyone working with SQL Azure, Windows Azure Storage, or Windows Azure AppFabric.

There are a number of great implementations of Failure Retry Logic as well as a number of Extension Methods which allows quick additions to pre-existing code that currently doesn’t implement transaction retry logic.

Install-Package EnterpriseLibrary.WindowsAzure.Autoscaling

Many people have been asking “Why won’t Microsoft Auto-scale my instances”, simply put, they know they’ll get it wrong as the application you build is unique to your industry. So to help people that would like the ability to auto-scale instances in Windows Azure Microsoft has released the Enterprise Library Blocks for Windows Azure.

Install-Package WindowsAzure.ELMAH.Tables

As important as ensuring that your Diagnostics are set up to monitor how Windows Azure is performing, it’s always a good idea to ensure that you’re logging your application for potential Issues. ELMAH is a set of Error Logging Modules And Handlers [for ASP.NET] which allows for a very simple and pluggable application error handling.

Just as ELMAH is necessary for your on-premise or shared hosted web applications, it remains just as essential to ensure logging is carried into the Cloud.