Saturday, July 31, 2010

Bing Map Development Resorces

This is a great list of resources for bing map development.

- Posted using BlogPress from my iPhone

Friday, July 30, 2010

Silverlight Interactive SDK

This is a link to the interactive silverlight SDK

Convert C# Solution to VB!

This is a great tool that converts c# projects to vb.

12 Absolutely and Insanely Essential Utilities For Programmers

This is a great article by Microsoft's Jess Liberty on some great unitlites every developer should have;

#1 ReSharper or CodeRush
#2 Fiddler and FireBug #3 Tortoise SVN
#4 TimeSnapper
#5 Instant VB….
#6 ExamDiff Pro
#7 AutoHotKey #8 Clipx
#9 Snip It Pro
#10 Evernote
#11 Mozy
#12 Mikago
#13 HTTrack

PDC 2009 On Demand

If you did not make it to PDC last year all the sessions are avaiable on line at  There is a lot of really good content there and its free. 

ILMerge to the Rescue?

I have talked about the merits of Ilmerge in the past ( and here is an interseting article by Dru Sellers on the topic.

Dru Sellers -

As I continue to work on the 'nu' story, one of the things I am thinking about a lot is how we are going to make this happen. Last week I also had the pleasure to spend some time talking about version management with Udi Dahan and Chris Patterson while they were both in Kansas City. While we discussed a variety of topics one of the things we discussed was how to manage dll dependencies. After this discussion I have come to my current 'thought.'

We should use ilmerge internal more. I have no doubt it has its issues but let me work this out. And then you can tell me what you think.

I am currently working on a new area of the Magnum project that is adding a nice abstraction on top of the file system. One of the features is handling zip files. For this I am using a third party library to handle all that nastiness. It was been a pleasure so far to work with. The problem is that in order to use this you now have to reference 3 assembilies:

Ionic.Zip.dll (DotNetZip)

So, some of this is due to the Magnum core philosophy that we are going to take dependencies with this library. So because I want to use Ionic.Zip I have to now have a new dll Magnum.FileSystem. That's fine but adding 3 references sucks. Not only that but I now have to add a new gem dependency for magnum as well. :( As I thought about this it occurred to me: "Why does the user care about Ionic.Zip?" the user never interacts with this library and if I replaced it with the next hot thing you wouldn't even know. :) Ok, so what if I just 'ilmerge' this bad boy in. What would happen? Well I think I would have fully encapsulated my code. And if I ilmerge internal it, you could actually use your own version of 'Ionic.Zip' and we wouldn't conflict with each other! How cool is that? Once, I have ilmerged that in I can probably just either drop the Magnum.FileSystem project or I can just ilmerge it in to Magnum as well. Suh-weet.

So lets take a second and think about what this would do for us as a process. Lets look at NHibernate:

YourByteCodeProvider and its dlls

NHibernate.dll of course that guy is going to stay around, he's the beef! What about Antlr3.Runtime.dll? If you are going to use Antlr3.Runtime in your own project do you want to be limited/constricted to whatever NHibernate is using? I would think not, so that puppy gets ilmerged in. Iesi.Collections? Gotta be honest, I should probably use more set based classes, but I don't; and when I do I use HashedSet which I am pretty sure NH supports at this point. But because this dll isn't fully encapsulated, I am pretty sure we can't just absorb this guy in. Question? Why don't we just merge the Iesi code base into NHibernate, I have never used it outside of NH. Have you? Last we have log4net, the venerable work horse of logging. This is another dll that I see us having a hard time with, we could merge it in, but configuring it would get interesting and I really like the log4net story. So that gets us from 4 -> 3 dlls. Not to much of a win.

So lets take a look at MassTransit. A fully configured MassTransit setup (at least as of now) could put the following dlls into your mix:

{YourContainersStuff}.dll (from 1 to possibly 4 dlls)

That a whopping 5 dlls, and if you use the saga support that is another 7-8 dlls, bringing the total to what could be 13 dlls. Schnikeys!

So as you can see, its not a 100% win, but I THINK the idea is going in the right direction. Framework builders, lets try to encapsulate our dependencies and ilmerge internal them. It will give our users a better experience and should make our out of the box experience that much better.

Please let me know what you think. Is this trash? Or is it good?

Thursday, July 29, 2010

List of Podcasts for .NET Programmers

Here is a list of .Net programer related podcasts that I listen to on a regual basis. These are great when driving, mowing the lawn, on the airplane or whenevery you have time to listen in.

Scott Hanselman - Microsoft

.Net Rocks!

This week on Channel 9 - Microsoft

Great list and article by Scott hanselman at Microsoft!

Microsoft Street Slide takes on Google Street View and Wins!

Here is a great video of the new Street Slide feature that Microsoft is working on with Bing Maps.  This is far better then Google's street view.  Here is a link to a good article on the topic,

The Essence of Driving – A Crash Course in Project Management

The following link is to a great blog post by Ivo Manolov's who is the test manager for Windows Presentation Foundation stack at Microsoft.  It is a nice summary regarding project managment and worth a look!

Wednesday, July 28, 2010

Microsoft #XAML Toolkit CTP – July 2010

Microsoft #XAML Toolkit CTP – July 2010: #Silverlight features described here:

Free Useful web Tools for Developers

The following links are some great free tools

1.  Convert Files

Easily convert different file formats. You can convert images, download YouTube video and much more with this web tool.

2.  Joongel

Are you a power searcher? Then this tool this for you. You simultaneously search different search engines in different categories. It can be very useful if you are doing an online research.

3.  Quick Thumnail

Simply create thumbnails in different sizes right from your browser. You can upload an image from your computer or web directory and choose sizes of the thumbnails you want.

4.  ScreenCastle

Free screen cast application very light weight.

5.  DevCheatSheet

Google for hours for cheat sheet you saw last week. You can find it in

Tuesday, July 27, 2010

SQL I/O Performance Measures

The following query will present you with the top 25 most i/o intensive queries your system has run.


(total_logical_reads/execution_count) AS avg_logical_reads,
(total_logical_writes/execution_count) AS avg_logical_writes,
(total_physical_reads/execution_count) AS avg_phys_reads,
FROM sys.dm_exec_query_stats
cross apply sys.dm_exec_sql_text(plan_handle) AS q
(total_logical_reads + total_logical_writes) DESC

Windows Intune

Microsoft has recently opened a beta of their new Windows Intune product. While the functionality in the Intune offering is not new, what is unique about it is the packaging. Intune is a collection of some of Microsoft’s most helpful desktop management tools.
Intune encompasses the following functionality:
  • Antivirus: Using the same underlying technology from Forefront Endpoint Protection and Microsoft Security Essentials, Intune can perform real-time and scheduled virus scans on systems.
  • License Management: If you purchase your licenses through a volume license agreement, Intune can have those licenses loaded into it and perform a system inventory to help you ensure that you stick to the terms of your licensing.
  • Monitoring and Alerting: Using a system similar to Systems Center Operations Manager, Intune can alert you when there is a problem with a desktop, such as a virus infection or a failed hard drive.
  • Update Deployments: Intune can manage your system updates and patches and give you control over which patches get deployed to which systems and verify that the patches have been applied.
  • Remote Assistance: You can use Intune to access your PCs to perform remote problem solving.
  • Policy Management: Intune has functionality for controlling certain aspects of Windows via policies. If you currently use Group Policy, your Group Policy settings will override Intune’s if there is a conflict. The full list of Intune’s policy capabilities can be found here.

Visual Studio 2010 Quick Reference Guidance

The Visual Studio 2010 Quick Reference Guidance consists of compact cheat sheets for Team Foundation Server (TFS) 2010 and Visual Studio (VS) 2010, addressing the core problem of teams in the field who are unaware of Visual Studio and Team Foundation Server capabilities or have little time to invest in detailed education.

The artifacts include an overview document and poster that allows you to quickly focus on individual areas like testing, by providing crisp and compact guidance sheets and quick reference posters. You can take these to your 5-min coffee break discussions or use them as a stepping stone to the more detailed and in-depth guidance you will find on MSDN.

Class Designer PowerToys for Visual Studio 2010 is Released

Class Designer PowerToys for Visual Studio 2010 is released today! It provides a bunch of enhancements to Visual Studio 2010 Class Designe.
It has many cool features like pan/zoom window, floating properties window, fast navigation, etc. You could find the detailed feature list in its help document which is available on the desktop after the Class Designer PowerToys is installed.
Besides the binary, the source code is also available. You could extend the PowerToys easily.
This set of add-ins augments existing functionality in the Visual Studio Class Designer and the Distributed Systems Designers. It now supports Visual Studio 2005, Visual Studio 2008 and Visual Studio 2010. The Design Tools Enhancements add-in provides a common set of features that can be used by both the Class Designer and the Distributed System Designers, such as pan/zoom window and rich formatting commands. The Class Designer Enhancements add-in provides additional functionality for the Visual Studio Class Designer, such as HTML export and nested type creation commands. This download includes all necessary source code and a Visual Studio project template for creating your own add-ins for the Visual Studiodesigners. The Class Designer is a developer productivity tool available in Visual Studio Standard Edition and above, which allows developers to easily visualize, design, refactor, and document their code. The Distributed System Designers enable software architects, operations managers, and developers to visually design service-oriented solutions and validate them at design time against their operational environments. The Distributed System Designers are a core component of Visual Studio Team Edition for Software Architects and the Visual Studio Team System.

Monday, July 26, 2010

How to cast objects between real data types and proxy data types

When you use web or WCF services your real data types are recreated into new proxy data types.  For example if you have a class called myNamespace.Person and consume that data type in a client using a service reference you get a new object xxxx.Person that while it has the same structure (properties) you can not do things like this;
dim person as new myNamespace.person
dim person2 as new servicereference1.person
person = person2
This can be an issue and while there are options such as hard coding the mapping it your self or using reflection to map the object, there is a better way.
AutoMapper is an object-object mapper. Object-object mapping works by transforming an input object of one type into an output object of a different type. What makes AutoMapper interesting is that it provides some interesting conventions to take the dirty work out of figuring out how to map type A to type B. As long as type B follows AutoMapper's established convention, almost zero configuration is needed to map two types.
This is a nice option when you need to move an object between the two types.

Tuesday, July 20, 2010

VS 2010 productivity tools update

Check out the latest release if this great add on for visual studio!

- Posted using BlogPress from my iPhone

Friday, July 16, 2010

Vacation Reading List

I am preparing to go on a weeks vacation to the Florida Keys with my family this weekend.  In preperation I have collected a list of reading material I want to read during my trip.  I use to read fiction for fun and have not in the last few years.  While I might finish Ford County by John Grishem, a book I have had for over a year, I plan on reading alot of programming related material.

Most of what I have collected are blog posts and articles.  I have a single "book" I am bring which is "Micrsoft .Net Architecting Applications for the Enterprise" (MSPress Dino Espositio and Andrea Saltarello).

Here are some of the articles I plan to take in;

C++ Beginner's Guide -
Code-First Development with Entity Framework 4  -
EF CTP4 Walkthrough: Code First  -
Learning WCF RIA Services  -

Microsoft Beginner Developer Learning Center

This is a great starting point for anyone wanting to learn programming or for a experanced developer looking to learn a new language.

C++ Beginner's Guide

This is a great free e-booking (pdf, xps format) on getting started with c++!

RAMMap v1.1

RAMMap v1.1

By Mark Russinovich and Bryce Cogswell
Published: June 23, 2010

Have you ever wondered exactly how Windows is assigning physical memory, how much file data is cached in RAM, or how much RAM is used by the kernel and device drivers? RAMMap makes answering those questions easy. RAMMap is an advanced physical memory usage analysis utility for Windows Vista and higher. It presents usage information in different ways on its several different tabs:

Use Counts: usage summary by type and paging list

Processes: process working set sizes

Priority Summary: prioritized standby list sizes

Physical Pages: per-page use for all physical memory

Physical Ranges: physical memory addresses

File Summary: file data in RAM by file

File Details: individual physical pages by file

Use RAMMap to gain understanding of the way Windows manages memory, to analyze application memory usage, or to answer specific questions about how RAM is being allocated. RAMMap’s refresh feature enables you to update the display and it includes support for saving and loading memory snapshots.

For definitions of the labels RAMMap uses as well as to learn about the physical-memory allocation algorithms used by the Windows memory manager, please see Windows Internals, 5th Edition.

Code-First Development with Entity Framework 4

This is a great post from Scott Gutrie on EF4!

EF CTP4 Walkthrough: Code First

The ADO.Net team posted a great article on EF CPT4.

Thursday, July 15, 2010

NETSH.EXE Explained

Netsh.exe is a tool an administrator can use to configure and monitor Windows-based computers at a command prompt. With the Netsh.exe tool, you can direct the context commands you enter to the appropriate helper, and the helper then carries out the command. A helper is a Dynamic Link Library (.dll) file that extends the functionality of the Netsh.exe tool by providing configuration, monitoring, and support for one or more services, utilities, or protocols. The helper may also be used to extend other helpers.

You can use the Netsh.exe tool to perform the following tasks:

  • Configure interfaces.
  • Configure routing protocols.
  • Configure filters.
  • Configure routes.
  • Configure remote access behavior for Windows-based remote access routers that are running the Routing and Remote Access Server (RRAS) Service.
  • Display the configuration of a currently running router on any computer.
  • Use the scripting feature to run a collection of commands in batch mode against a specified router.
The syntax for the Netsh.exe tool is:

netsh [-r router name] [-a AliasFile] [-c Context] [Command | -f ScriptFile]

To display a list of subcontexts and commands that can be used in a context, type the context name followed by a space and a ? at the netsh> command prompt. For example, to display a list of subcontext and commands that can be used in the /routing context, type routing ? at the netsh> command prompt, and then press ENTER.


Context strings are appended to the Netsh.exe tool command and are passed to an associated helper. The helper may have one or more entry points that map to contexts. Some of the contexts available in the Netsh.exe tool are:
Context Command: /dhcp
Result: Changes to the Dynamic Host Configuration Protocol (DHCP) context.
Context Command: /ras
Result: Changes to the Remote Access Server (RAS) context.
Context Command: /routing
Result: Changes to the routing context.
Context Command: /wins
Result: Changes to the Windows Internet Name Service (WINS) context.
Contexts may also nest within other contexts. For example, the following contexts operate within the netsh>ras context:
Context Command: /ip
Result: Changes to the Internet Protocol (IP) context.
Context Command: /ipx
Result: Changes to the Internetwork Packet Exchange (IPX) context.
Context Command: /netbeui
Result: Changes to the NetBios Enhanced User Interface (NETBEUI) context.
The following subcontexts operate within the netsh>routing ip context:
Context Command: /autodhcp
Result: Changes to the autodhcp subcontext.
Context Command: /dnsproxy
Result: Changes to the dnsproxy subcontext.
Context Command: /igmp
Result: Changes to the Internet Group Membership Protocol (IGMP) subcontext.
Context Command: /mib
Result: Changes to the Management Information Base (MIB) subcontext.
Context Command: /nat
Result: Changes to the Network Address Translation (NAT) subcontext.
Context Command: /ospf
Result: Changes to the Open Shortest Path First (OSPF) subcontext.
Context Command: /relay
Result: Changes to the relay subcontext.
Context Command: /rip
Result: Changes to the Routing Information Protocol (RIP) subcontext.

Netsh.exe Commands

The following additional commands can be used with the Netsh.exe tool:
NOTE: Optional parameters are shown in brackets ([ ]). Alternative entries are shown with a pipe (|) character between them.
Context Command: /?
Result: Displays help.
Context Command: /abort
Result: Discards any changes made in offline mode. No effect in online mode.
Context Command: /add helper DLL-name
Result: Installs the helper .dll file in netsh.exe.
Context Command: /alias [alias-name] [string1] [string2 ...]
Result: If /alias, lists all aliases. If /alias alias-name, displays the equivalent string. If /alias alias-name string1 string2 ..., sets alias-name to the specified strings.
Context Command: /bye
Result: Exits the program.
Context Command: /commit
Result: Commits any changes made in the offline mode to the router. No effect in the online mode.
Context Command: /delete helper .dll file name
Result: Removes the helper .dll file from Netsh.exe.
Context Command: /dump -file name
Result: Dumps or appends configuration to a text file.
Context Command: /exec script file name
Result: Loads the script file and executes commands from it.
Context Command: /exit
Result: Exits the program.
Context Command: /h
Result: Displays help.
Context Command: /help
Result: Displays help.
Context Command: /offline
Result: Sets the current mode to offline. Any changes made in this mode are saved, but require a "commit" or "online" command to be set in the router.
Context Command: /online
Result: Sets the current mode to online. Any changes in this mode are immediately reflected in the router.
Context Command: /popd
Result: Pops a context from the stack.
Context Command: /pushd
Result: Pushes current context onto the stack.
Context Command: /quit
Result: Exits the program.
Context Command: /set mode [mode =] online | offline
Result: Sets the current mode to online or offline.
Context Command: /show alias | helper | mode
Result: If /show alias, lists all defined aliases. If /show helper, lists all top-level helpers. If /show mode, shows the current mode.
Context Command: /unalias alias name
Result: Deletes the specified alias.

WCF Peer to Peer

I am working on a project that requires a modified peer to peer design and found the following links very helpful;

Peer To Peer Programming with WCF and .Net 3.5 by Amit Bahree and Chris Peiris

Here are some great webcasts on Channel9 regarding the topic;

Peer to Peer Series Part 1: Intro to PNRP

Peer to Peer Series Part 2: Registering Names with PNRP API

Peer to Peer Series Part 3: Resolving Names Synchronously with the PNRP API

Peer to Peer Series Part 4: Resolving Peer Names Asynchronously

Peer to Peer Series Part 5: Direct Connect Peers via WCF

Peer to Peer Series Part 6: Introduction to PeerChannel

Peer to Peer Series Part 7: PeerChannel Basics

Peer to Peer Series: Sample WPF PNRP Application

Wednesday, July 14, 2010

MSDN Radio

MSDN radio is a great site to listen to some development topics thoughtout the day.

Monday, July 12, 2010

Learning WCF RIA Services

This link has a great collection of information on RIA services and is a good start for anyone new to it.

PDC 2010 @ Microsoft Campus

PDC 2010 has been set for October 28 & 29 at the Microsoft campus!

Introducing the Windows Azure Platform Appliance (Private Azure Cloud!)

Bob Muglia announced an exciting new addition the Windows Azure platform, called the Windows Azure Platform Appliance.  When the appliance is released for broader availability, it will allow partners and large customers to host their own dedicated versions of Windows Azure and SQL Azure.  For developers, this means that your Windows Azure applications can be hosted on-premises, in a partner’s data center, or in the public cloud without change. Join me in this video with Technical Strategist, Steve Marx as we talk about what the appliance means to developers and dig a bit more into the announcement.

Motivation for VB Programers!

Here is a little somthing to get you motivated!

Friday, July 09, 2010

Thursday, July 08, 2010

Introducing IIS Express

Below is a post for Scott Guthrie about the upcoming release of IIS Express.


Developers today build and test ASP.NET sites and applications using one of two web-servers:

  • The ASP.NET Development Server that comes built-into Visual Studio
  • The IIS Web Server that comes built-into Windows

Both of the above options have their pros and cons, and many ASP.NET developers have told us: “I wish I could have the ease of use of the ASP.NET Development Server, but still have all the power and features of IIS”.  Today I’m happy to announce a new, free option that we are enabling – IIS Express - that combines the best characteristics of both, and which will make it easier to build and run ASP.NET sites and applications.

IIS Express will work with VS 2010 and Visual Web Developer 2010 Express, will run on Windows XP and higher systems, does not require an administrator account, and does not require any code changes to use.  You will be able to take advantage of it with all types of ASP.NET applications, and it enables you to develop using a full IIS 7.x feature-set.

How Things Work Today

Before I get into the details of IIS Express, let’s first quickly review how the ASP.NET Development Server and IIS options work today.

ASP.NET Development Server

Visual Studio’s built-in ASP.NET Development Server (also known as “Cassini”) has the benefit of being light-weight and easy to quickly run.  It doesn’t listen on remote ports (which makes it easier to get approved for many corporate security environments), works even when you are running under a non-administrator account, and doesn’t require a separate installation step. 

The fact that it is so easy to get running is a huge positive of it – and the reason it is the default web-server used by ASP.NET projects in Visual Studio when you press F5 to run them:


The downside with the ASP.NET Developer Server, though, is that it does not support a full set of web-server features.  For example, it doesn’t support SSL, URL Rewriting Rules (like the SEO URL Rewrite Rules I blogged about here), Custom Security Settings, and other richer features now offered with IIS 7.

IIS Web Server

IIS is the other option developers use when running and testing their applications with Visual Studio.  You can configure a web project within Visual Studio to use IIS by right-clicking on the project and pulling up its properties (and then by clicking on the “Web” tab within the properties window)":


Using IIS as your development server allows you to take full advantage of all web-server features (SSL, URL Rewrite Rules, etc).  IIS is a full-fledged web-server – which means you’ll get an experience closer to what it will work like when you deploy the application on a production server.

The downside with using the IIS option today, though, is that some companies don’t allow full web-servers to be installed on developer machines. IIS also requires administrator account access to setup and debug projects.  Different versions of Windows also support different versions of IIS.  For example, if you are running on Windows XP you have to use the IIS 5.1 web-server that comes with it – which doesn’t support all the new features of IIS 7.x.  Configuring a web project within VS to use IIS also requires some extra installation and configuration steps.

IIS Express – The Best of Both Options

We have been working on a new flavor of IIS 7.x that is optimized for developer scenarios that we are calling “IIS Express”. We think it combines the ease of use of the ASP.NET Web Server with the full power of IIS.  Specifically:

  • It’s lightweight and easy to install (less than 10Mb download and a super quick install)
  • It does not require an administrator account to run/debug applications from Visual Studio
  • It enables a full web-server feature set – including SSL, URL Rewrite, Media Support, and all other IIS 7.x modules
  • It supports and enables the same extensibility model and web.config file settings that IIS 7.x support
  • It can be installed side-by-side with the full IIS web server as well as the ASP.NET Development Server (they do not conflict at all)
  • It works on Windows XP and higher operating systems – giving you a full IIS 7.x developer feature-set on all OS platforms

IIS Express (like the ASP.NET Development Server) can be quickly launched to run a site from a directory on disk.  It does not require any registration/configuration steps. This makes it really easy to launch and run for development scenarios.

VS 2010 Integration

We are enabling IIS Express so that it can be easily used with Visual Studio 2010. You’ll be able to configure VS 2010 to use it instead of the ASP.NET Web Server as the default web-server on ASP.NET Projects.  Like the ASP.NET Development Server today, you won’t need to register a site or virtual directory to use IIS Express. It will support the same usage-model as the ASP.NET Development Server today – just with more feature support.

When you press F5 to run an ASP.NET project, Visual Studio can automatically launch IIS Express and use it to run/debug the application (no extra configuration required).  Like the ASP.NET Web Server, IIS Express will show up in your task-bar tray when running:


You can right-click and click “exit” on the icon above to quickly shutdown IIS Express.  You can also right-click and pull up a list of all sites running with it, as well as the directory location and .NET versions they are running under:


Two cool things to notice above:

1) The “Test Site” we are running, as well as IIS Express itself, live under the c:\users\[username] folder on disk. This enables non-administrator usage of IIS Express and sites – and enables a bunch of scenarios not possible with the full IIS today (including the ability to run IIS Express in both a locked-down enterprise environment as well as a locked-down school shared computer environment).

2) The “Test Site” we are running above using IIS Express supports both HTTP and HTTPS access.  IIS Express automatically installs a “self-signed certificate” and enables URL ACLs and SSL Certificates for ports so that developers (running as non-administrators on a machine) can use SSL without needing to elevate their accounts or setup any additional configuration.  This enables you to configure secure pages within your applications (like Logon forms) for SSL and run/test them at development time just like they’ll work on your real web-server.

IIS 7.x Feature Set

IIS Express is as easy to run and use as the ASP.NET Web Server you are familiar with today.  But because IIS Express is based on the IIS 7x codebase, you have a full web-server feature-set that you can use.  This means you can build and run your applications just they’ll work on a real production web-server.  In addition to scenarios like SSL, you can take advantage of the IIS 7.x URL Rewriter module, Media Extensions, Dynamic Compression, Advanced Logging, Custom Security and other rich modules now available.

In addition to supporting ASP.NET, IIS Express also supports Classic ASP and other file-types and extensions supported by IIS – which also makes it ideal for sites that combine a variety of different technologies.


We think IIS Express makes it even easier to build, run and test web applications.  It works with all versions of ASP.NET and supports all ASP.NET application types (including obviously ASP.NET Web Forms and ASP.NET MVC applications).  Best of all – you do not need to change any code to take advantage of it.  You’ll be able to optionally use it with all your current projects today.

We’ll be releasing the first public beta of IIS Express shortly. With the beta you’ll be able to right-click on a file-system folder and have IIS Express launch a web-site based on that file-system location. We’ll also be releasing a patch for VS 2010 and Visual Web Developer 2010 Express later this year that will enable you to automatically launch and use IIS Express in place of VS’s built-in ASP.NET Developer Server.  Future versions of Visual Studio will then ship with this functionality built-in.

SQL CE 4.0

Below is some information on the up coming release of SQL CE 4.0.

Introducing SQL Server Compact Edition 4

SQL CE is a free, embedded, database engine that enables easy database storage.  We will be releasing the first public beta of SQL CE Version 4 very shortly. Version 4 has been designed and tested to work within ASP.NET Web applications.

Works with Existing Data APIs

SQL CE works with existing .NET-based data APIs, and supports a SQL Server compatible query syntax.  This means you can use existing data APIs like ADO.NET, as well as use higher-level ORMs like Entity Framework and NHibernate with SQL CE.  Pretty much any existing data API that supports the ADO.NET provider model will work with it.

This enables you to use the same data programming skills and data APIs you know today.

No Database Installation Required

SQL CE does not require you to run a setup or install a database server in order to use it.  You can now simply copy the SQL CE binaries into the \bin directory of your ASP.NET application, and then your web application can run and use it as a database engine.  No setup or extra security permissions are required for it to run.  You do not need to have an administrator account on the machine.  It just works.

Applications you build can redistribute SQL CE as part of them.  Just copy your web application onto any server and it will work.

Database Files are Stored on Disk

SQL CE stores databases as files on disk (within files with a .sdf file extension). You can store SQL CE database files within the \App_Data folder of your ASP.NET Web application - they do not need to be registered in order to use them within your application. 

The SQL CE database engine then runs in-memory within your application.  When your application shuts down the database is automatically unloaded.

Shared Web Hosting Scenarios Are Now Supported with SQL CE 4

SQL CE 4 can now run in “medium trust” ASP.NET 4 web hosting scenarios – without a hoster having to install anything. Hosters do not need to install SQL CE or do anything to their servers to enable it.

This means you can build an ASP.NET Web application that contains your code, content, and now also a SQL CE database engine and database files – all contained underneath your application directory.  You can now deploy an application like this simply by using FTP to copy it up to an inexpensive shared web hosting account – no extra database deployment step or hoster installation required.

SQL CE will then run within your application at the remote host.  Because it runs in-memory and saves its files to disk you do not need to pay extra for a SQL Server database.

Visual Studio 2010 and Visual Web Developer 2010 Express Support

VS 2010 and Visual Web Developer 2010 Express will add SQL CE 4 tooling support for ASP.NET scenarios in an update we’ll be rolling out in the future.  This will enable you to add SQL CE database files to your ASP.NET projects, use the Visual Studio Server Explorer to create and edit tables in them, and use higher-level designers like Entity Framework (see below) to model and map the database to classes that you can then query and program against using LINQ.


This means that in addition to using the same data APIs you know today, you will also be able to easily use the same development tools you already know with SQL CE.

Supports Both Development and Production

SQL CE can be used for both development scenarios and light-usage production usage scenarios.  With the SQL CE 4 release we’ve done the engineering work to ensure that SQL CE won’t crash or deadlock when used in a multi-threaded server scenario (like ASP.NET).  This is a big change from previous releases of SQL CE – which were designed for client-only scenarios and which explicitly blocked running in web-server environments.  Starting with SQL CE 4 you can use it in a web-server as well. 

There are no license restrictions with SQL CE.

Easy Migration to SQL Server

SQL CE is an embedded database – which makes it ideal for development and light-usage scenarios.  For high-volume sites and applications you’ll probably want to migrate it to use SQL Server Express (which is free), SQL Server or SQL Azure.  These servers enable much better scalability, more development features (including features like Stored Procedures – which aren’t supported with SQL CE), as well as more advanced data management capabilities.

We’ll ship migration tools that enable you to optionally take SQL CE databases and easily upgrade them to use SQL Server Express, SQL Server, or SQL Azure.  You will not need to change your code when upgrading a SQL CE database to SQL Server or SQL Azure.  Our goal is to enable you to be able to simply change the database connection string in your web.config file and have your application just work.


SQL CE 4 provides an easy, lightweight database option that you’ll now be able to use with ASP.NET applications.  It will enable you to get started on projects quickly – without having to install a full database on your local development box.  Because it is a compatible subset of the full SQL Server, you write code against it using the same data APIs (ADO.NET, Entity Framework, NHibernate, etc).

You will be able to easily deploy SQL CE based databases to a remote hosting account and use it to run light-usage sites and applications. As your site traffic grows you can then optionally upgrade the database to use SQL Server Express (which is free), SQL Server or SQL Azure – without having to change your code. 

Friday, July 02, 2010

.Net Tools

The purpose of this post is to list some .Net related applications, tools, utilities and add-ons with brief descriptions that I use or find useful.

Application Description

Visual Studio 2010 Pro Power Tools

(June 25, 2010, 10.0.10608.1630)

Revision Notes

  • 10.0.10608.1630
    Fixed issue where Visual Studio may crash on startup on computers where proxies required user entered credentials.

Visual Studio 2010 Productivity Power Tools

A set of extensions to Visual Studio Professional (and above) which improves developer productivity.

  • Document Well 2010 Plus (More Info)
    One of the key pieces of feedback that we have received over several versions of Visual Studio is that users want to be able to customize the behaviour of their document tabs.  From the ordering of tabs to the position of the close buttons, user can now configure dozens of different options for their tabs.  Go to Tools -> Options -> Environment -> Document Tab Well to configure these options as you prefer:
    • Tab Well UI
      • Scrollable tabs
        Maintain spatial consistency of the documents that are included in the document well.
      • Vertical tabs
        Document tabs are shown vertically, allowing you to fit more tabs than are normally visible when shown horizontally.
      • Pinned tabs
        Allows you to pin tabs to keep them always visible and available.
      • Show close button in tab well
        Similar to Visual Studio 2008, will show a close button in the document well that will close the active tab.
    • Tab Behavior
      • Remove tabs by usage order (LRU)
        When a new tab is inserted and existing tabs don't fit in the document well, instead of removing the tab at the end of the well it will remove the least recently used tab. This ensures that frequently used tabs are readily available.
      • Show pinned tabs in a separate row/column
        Pinning tabs can quickly cause you to run out of space for regular tabs. The option allows you to always show pinned tabs in a separate row (or column, if displayed vertically) from regular tabs.
    • Sorting
      • Sort tabs by project
        Tabs will be sorted by the project they belong to, thus keeping them always together in the document tab well.
      • Sort tabs alphabetically
        Tabs will be sorted alphabetically. When Sort By Project is turned on, tabs will be sorted first by project and then alphabetically.
      • Sort tab well dropdown alphabetically
        The drop down menu at the right end of the document well is sorted alphabetically. This option allows ordering as the tabs are laid out in the document well.
    • Tab UI
      • Color tabs according to their project or according to regular expressions
        This option permits tabs to be colored according to the project they belong to. This is particularly useful when sorting tabs by project, as it allows you to immediately identify different groups of project documents.
        You can also configure regular expressions and assign a color to each one. If the name of a tab matches the configured regular expression, it will be colored with the assigned color.
      • Miscellaneous options that modify tab UI
        • Show document/toolwindow icon in tab
        • Show close button in tab
        • Modify dirty indicator style
          This option allows you to select from a set of different dirty indicators that you might prefer over the asterisk.
        • Modify minimum and maximum tab size
          Allows you to modify minimum and maximum tab size. Try setting minimum and maximum sizes to the same value, and you will have evenly spaced tabs.
  • Searchable Add Reference Dialog (More Info)
    The new Add Reference dialog makes it faster and easier for you to find the reference that you are looking for and add it to your VB, C# or F# project.  From the Solution Explorer, simply right click on the References node, select the Add Reference command to see the updated Add Reference Dialog. 
  • Highlight Current Line
    As the resolution of monitors increases, it’s becoming more difficult to find the caret in the code editor.  The highlight current line extension makes it easy to find the caret by highlighting the line that the caret is on in the editor.  You can even configure the default colour by changing the setting for “Current Line (Extension)” and “Current Line Inactive (Extension)” in Tools Options Fonts & Colors. 
  • HTML Copy (More Info)
    This extension provides support for the HTML Clipboard format when copying code from the editor.  This means that you’ll no longer have to go fix up the formatting of your code when you paste it into a TFS bug form or any other HTML based control. 
  • Triple Click
    It’s never been easier to select a line of code from the mouse by simple triple-clicking anywhere on the line. 
  • Fix Mixed Tabs
    Some developers prefer tabs, others prefer spaces, and nobody likes mixing tabs & spaces.  This extension promotes developer harmony by warning as they are open or save a file that has a mixture of tabs & spaces.  The information bar also provides an easy way to fix the file to suit your preference. 
  • Ctrl + Click Go To Definition
    This extension gives the editor a web browser by adding clickable hyperlinks to symbols in your code as you hold down the Ctrl key.
  • Align Assignments
    This extension is useful for making your code a little more readable by aligning the assignments when you type Ctrl+Alt+] such that it takes this:

    And turns it into this:

    Please note: This may conflict with your formatting settings. E.g. in C# you will need to disable: Tools->Options->Text Editor->C#->Formatting->Spacing->"Ignore spaces in declaration statements"
  • Colorized Parameter Help
    This extension improves consistency with the editor by applying syntax highlighting to the contents of the Parameter Help window for C# &VB. 
  • Move Line Up/Down Commands
    This extension maps the Alt+Up Arrow & Alt+Down Arrow keys such that they will move the current line of code or the selected lines up and down through the editor. 
  • Column Guides
    Since Visual Studio 2002, there has been a not so secret registry key which allowed user to draw a vertical line in the code editor.  This is very useful to remind developers that their full line of code or comments may not fit one a single screen. Thanks to this extension this feature has returned with UI configure it.  Simply place the cursor at the appropriate column and select Add Guideline from the context menu 

PowerCommands for Visual Studio 2010

June 16, 2010, Version

PowerCommands 10.0

PowerCommands 10.0 is a set of useful extensions for the Visual Studio 2010 adding additional functionality to various areas of the IDE. Visit the VSX Developer Center at for more information about extending Visual Studio.
Below is a list of the commands included in PowerCommands for Visual Studio 2010 version 10.0.
Enable/Disable PowerCommands in Options dialog
This feature allows you to select which commands to enable in the Visual Studio IDE. Point to the Tools menu, then click Options. Expand the PowerCommands options, then click Commands. Check the commands you would like to enable.
Note: All power commands are initially defaulted Enabled.
Format document on save / Remove and Sort Usings on save
The Format document on save option formats the tabs, spaces, and so on of the document being saved. It is equivalent to pointing to the Edit menu, clicking Advanced, and then clicking Format Document. The Remove and sort usings option removes unused using statements and sorts the remaining using statements in the document being saved.
Note: The Remove and sort usings option is only available for C# documents.
Note: Format document on save and Remove and sort usings both are initially defaulted OFF.
Clear All Panes
This command clears all output panes. It can be executed from the button on the toolbar of the Output window.
Copy Path
This command copies the full path of the currently selected item to the clipboard. It can be executed by right-clicking one of these nodes in the Solution Explorer:
The solution node; A project node; Any project item node; Any folder.
Email CodeSnippet
To email the lines of text you select in the code editor, right-click anywhere in the editor and then click Email CodeSnippet.
Insert Guid Attribute
This command adds a Guid attribute to a selected class. From the code editor, right-click anywhere within the class definition, then click Insert Guid Attribute.
Show All Files
This command shows the hidden files in all projects displayed in the Solution Explorer when the solution node is selected. It enhances the Show All Files button, which normally shows only the hidden files in the selected project node.
Undo Close
This command reopens a closed document , returning the cursor to its last position. To reopen the most recently closed document, point to the Edit menu, then click Undo Close. Alternately, you can use the CtrlShiftZ shortcut.
To reopen any other recently closed document, point to the View menu, click Other Windows, and then click Undo Close Window. The Undo Close window appears, typically next to the Output window. Double-click any document in the list to reopen it.
Collapse Projects
This command collapses a project or projects in the Solution Explorer starting from the root selected node. Collapsing a project can increase the readability of the solution. This command can be executed from three different places: solution, solution folders and project nodes respectively.
Copy Class
This command copies a selected class entire content to the clipboard, renaming the class. This command is normally followed by a Paste Class command, which renames the class to avoid a compilation error. It can be executed from a single project item or a project item with dependent sub items.
Paste Class
This command pastes a class entire content from the clipboard, renaming the class to avoid a compilation error. This command is normally preceded by a Copy Class command. It can be executed from a project or folder node.
Copy References
This command copies a reference or set of references to the clipboard. It can be executed from the references node, a single reference node or set of reference nodes.
Paste References
This command pastes a reference or set of references from the clipboard. It can be executed from different places depending on the type of project. For CSharp projects it can be executed from the references node. For Visual Basic and Website projects it can be executed from the project node.
Copy As Project Reference
This command copies a project as a project reference to the clipboard. It can be executed from a project node.
Edit Project File
This command opens the MSBuild project file for a selected project inside Visual Studio. It combines the existing Unload Project and Edit Project commands.
Open Containing Folder
This command opens a Windows Explorer window pointing to the physical path of a selected item. It can be executed from a project item node
Open Command Prompt
This command opens a Visual Studio command prompt pointing to the physical path of a selected item. It can be executed from four different places: solution, project, folder and project item nodes respectively.
Unload Projects
This command unloads all projects in a solution. This can be useful in MSBuild scenarios when multiple projects are being edited. This command can be executed from the solution node.
Reload Projects
This command reloads all unloaded projects in a solution. It can be executed from the solution node.
Remove and Sort Usings
This command removes and sort using statements for all classes given a project. It is useful, for example, in removing or organizing the using statements generated by a wizard. This command can be executed from a solution node or a single project node.
Extract Constant
This command creates a constant definition statement for a selected text. Extracting a constant effectively names a literal value, which can improve readability. This command can be executed from the code editor by right-clicking selected text.
Clear Recent File List
This command clears the Visual Studio recent file list. The Clear Recent File List command brings up a Clear File dialog which allows any or all recent files to be selected.
Clear Recent Project List
This command clears the Visual Studio recent project list. The Clear Recent Project List command brings up a Clear File dialog which allows any or all recent projects to be selected.
Transform Templates
This command executes a custom tool with associated text templates items. It can be executed from a DSL project node or a DSL folder node.
Close All
This command closes all documents. It can be executed from a document tab.

.NET Reflector (Free)
.NET Reflector Pro ($99)

Version 6.1.0

.NET Reflector v6 –Free

Explore and analyze compiled .NET assemblies, viewing them in C#, Visual Basic and IL. Now supports .NET 4 , and includes a 14-day free trial of .NET Reflector Pro.

Step into decompiled assemblies whilst debugging in Visual Studio

.NET Reflector Pro is an add-in to Visual Studio that lets you step straight into the source code of any managed assembly, even when the source is not available. View 3-step walk-through or the full demo video.

  • Step into decompiled assemblies and use all the debugging techniques you would use on your own code.
  • Get a better understanding of unfamiliar or poorly documented code, by stepping into it straight from the VS debugger.
  • Faced with a bug but not sure what is going on? Save time on debugging with .NET Reflector Pro.
Refactor!™ Pro for Visual Studio® ($99)
Never before has a developer tool been so easy to use. You don't have to be an architect or designer to reap the benefits from using Refactor! Pro™. Tasks you do all the time are suddenly much easier with Refactor!. Simply highlight the code you want to change — smart tags show what's available. Select the desired code change operation from the menu. Preview hinting marks up the code and shows the impact of the change before you commit.

See. We told you it was easy.

Amazing Productivity Boost

Declaring constants, renaming variables, simplifying complex code — these are the things developers do all the time to improve readability and the quality of the source code. Refactor! makes all this just a single keystroke away. Do the things you always do, now with greater speed, accuracy and efficiency!

Industry-grade Quality

At Developer Express, we're serious about quality. That's why Refactor! Pro is backed by 18,000+ test cases and a hardworking staff of developers and test case writers committed to continually exceeding your expectations.

Immediate Return on Investment

Refactor! Pro has everything developers need to become productive within minutes of installing. Most developers will experience a return on investment in the first day of use. If you write or maintain code for a living, you owe it to yourself to add Refactor! to your toolset.

Undisputed Refactoring Leader

With more than 150 refactorings, Refactor! Pro has more refactorings than any other tool for any platform. And best of all, it's from a company you can trust: Developer Express, the leading component, framework, and tool vendor for .NET.

CodeRush™ with Refactor!™ Pro
Powerful. Efficient. Fast.

Today, software consumers demand more than ever before from developers. The pressure to deliver more features with higher quality in less time has never been greater. Developer Express created CodeRush for Visual Studio® .NET to help developers and managers meet these increased demands for quality and functionality, by boosting productivity while eliminating the repetition that erodes precious creativity.

For Developers, CodeRush for Visual Studio® .NET will help you create sophisticated code blocks in seconds and extend code templates instantly. CodeRush will complete identifiers as you type and expand or contract selections logically. With CodeRush, you will be able to instantly place selected code inside Try/Catch blocks, Regions and your own custom wrappers with ease. You can even reverse the logic of selected code and revisit important points within your code instantly (and effortlessly swap between locations).

The obvious question might be how or what does CodeRush do that my current editor doesn't since I'm quite productive now? The answer is that by integrating tightly with the Visual Studio® .NET IDE, CodeRush is able to improve the development environment from the inside out - bringing you new ways to look at code, new ways to generate code, new ways to navigate through code, and new ways to create your own extensions to your development environment.

CodeRush includes many powerful templates, but perhaps the most powerful CodeRush feature is the ability to build your own in seconds. Of course CodeRush for Visual Studio® .NET is also 100% managed code and fully integrated within the IDE itself, so you can start extending your development environment today using nothing but managed code. Every single CodeRush feature is implemented as a plug-in using Visual Studio's form designer and property browser. It's the fastest, most powerful way to extend Visual Studio® .NET -- guaranteed!

Like all Developer Express technologies, CodeRush for Visual Studio® .NET comes with a 60 day no hassle money back guarantee. If after trying CodeRush, you don't agree that it is the best and most productive way to create software in Visual Studio, you can obtain a refund, no questions asked.

SourceGear Fortress

Fortress is a cross-platform Application Lifecycle Management (ALM) solution for small and medium-sized teams. Fortress is everything Vault is with the addition of integrated work item tracking.

    SOS 5 Pending Checkins

  • World-class version control
  • Integrated work item tracking
  • Integration with Visual Studio
  • Integration with Eclipse
  • Windows stand-alone client
  • Windows, Mac OS X and Unix command-line clients
  • Free demo
SourceGear Vault

Vault is a version control tool for professional development teams designed to be a compelling replacement for SourceSafe.

    SOS 5 Pending Checkins

  • Repository storage in SQL Server
  • Seamless transition from SourceSafe
  • Atomic Checkin Transactions
  • Designed for high performance, even for remote users
  • Integration with Visual Studio
  • Integration with Eclipse
  • Windows stand-alone client
  • Windows, Mac OS X and Unix command-line clients
  • Free 30-day evaluation
  • Free for a single user
PowerISO is a powerful CD/DVD image file processing tool, which allows you to open, extract, create, edit, compress, encrypt, split and convert ISO files, and mount these files with internal virtual drive. It can process almost all CD-ROM image files including ISO and BIN.
NAnt (.Net Build Tool)

NAnt is different.  Instead of a model where it is extended with shell-based commands, NAnt is extended using task classes.  Instead of writing shell commands, the configuration files are XML-based, calling out a target tree where various tasks get executed.  Each task is run by an object that implements a particular Task interface.

Granted, this removes some of the expressive power that is inherent in being able to construct a shell command such as 'find . -name foo -exec rm {}', but it gives you the ability to be cross-platform - to work anywhere and everywhere. And hey, if you really need to execute a shell command, NAnt has an <exec> task that allows different commands to be executed based on the OS it is executing on.


Make your .NET Code Beautiful with NDepend
NDepend is a Visual Studio tool to manage complex .NET code and achieve high Code Quality. With NDepend, software quality can be measured using Code Metrics, visualized using Graphs and Treemaps, and enforced using standard and custom Rules.
Hence the software design becomes concrete, code reviews are effective, large refactoring are easy and evolution is mastered.


FxCop is an application that analyzes managed code assemblies (code that targets the .NET Framework common language runtime) and reports information about the assemblies, such as possible design, localization, performance, and security improvements. Many of the issues concern violations of the programming and design rules set forth in the Design Guidelines, which are the Microsoft guidelines for writing robust and easily maintainable code by using the .NET Framework.

FxCop is intended for class library developers. However, anyone creating applications that should comply with the .NET Framework best practices will benefit. FxCop is also useful as an educational tool for people who are new to the .NET Framework or who are unfamiliar with the .NET Framework Design Guidelines.

FxCop is designed to be fully integrated into the software development cycle and is distributed as both a fully featured application that has a graphical user interface (FxCop.exe) for interactive work, and a command-line tool (FxCopCmd.exe) suited for use as part of automated build processes or integrated with Microsoft Visual Studio® .NET as an external tool.


StyleCop analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Visual Studio or integrated into an MSBuild project.

What Is NUnit?

NUnit is a unit-testing framework for all .Net languages. Initially ported from JUnit, the current production release, version 2.5, is the sixth major release of this xUnit based unit testing tool for Microsoft .NET. It is written entirely in C# and has been completely redesigned to take advantage of many .NET language features, for example custom attributes and other reflection related capabilities. NUnit brings xUnit to all .NET languages.

ANTS Performance Profiler (RedGate)

ANTS Performance Profiler (Latest version: 6.0 )

NEW! .NET code profiler: Speed up the performance of your .NET applications

ANTS Performance Profiler for testing and optimizing code performance

  • Identify performance bottlenecks within minutes
  • Optimize .NET application performance
  • Drill down to slow lines of code with line-level timings
  • Profile aspx, ASP.NET, C# code, and VB.NET applications
  • Available as a standalone tool, or as part of the .NET Developer Bundle
ANTS Memory Profiler: Profile the memory usage of your .NET application (RedGate)

ANTS Memory Profiler: Profile the memory usage of your .NET application

Latest version: 5.2

Find memory leaks and optimize memory usage

memory profiling tool for finding .net memory leak

  • Check the memory usage of your .NET program
  • Find memory leaks within minutes
  • Optimize memory usage of your C# and VB.NET code
  • Available as a standalone tool or as part of the .NET Developer Bundle

Exception Hunter *(Red Gate)

Exception Hunter

Latest version: 2.1

Locate unhandled exceptions your program may throw and eliminate crashes before they happen

Exception Hunter box shot

  • Find the unhandled exceptions your functions can throw – before you even ship
  • View exactly where exceptions are thrown with the new source code view; thanks to technology from .NET Reflector you can do this even where you don't have the original source code

Until now, developers have had to wait until an error happened to find out which method throws which exceptions.

Exception Hunter is a static analysis tool that finds and reports the set of possible exceptions your functions might throw – before you even ship. With it, you can locate unhandled exceptions easily and quickly, down to the line of code that is throwing the exceptions. Once you have the results, you can decide which exceptions need to be handled (with some exception handling code) before you release your application into the wild.