In a Windows Azure project, you can specify the Guest OS version for your VM. This is done by setting the osVersion property inside the ServiceConfiguration file:
If you don’t specify a version explicitly, the latest Guest OS is chosen for you. For production applications, it’s probably best to always provide an explicit value, and I have a real world lesson that demonstrates this!
MSDN currently has a Guest OS Version and SDK Compatibility Matrix page that is extremely helpful if you’re trying to figure out which versions offer what features. I recently ran into a problem when examining some of my performance counters – they were all zero (and shouldn’t have been)! Curious to find out why, I did some digging (which means someone internal told me what I was doing wrong).
In short, I had specified a performance counter to monitor like so: "\ASP.NET Applications(__Total__)\Requests/Sec". This had worked fine, but when I next redeployed some weeks later, the new Guest OS (with .NET Fx 4.0) took this to mean 4.0 Requests/Sec, because I didn’t specify a version. So, I was getting zero requests/sec because my app was running on the earlier runtime. This was fixed by changing the performance counter to "\ASP.NET Apps v2.0.50727(__Total__)\Requests/Sec".
For more information on this, check out this article on MSDN. And thanks to the guys in the forum for getting me up and running so quickly!