Well it's been a fun and creative couple of days for headlines:
- Microsoft Recruits for .Net Framework Compatbility Testing (started off being called "Microsoft .NET Framework Breaks Apps")
- Ouch! .Net Framework 2.0 Breaks Apps
- .Net Developers: 'What, Me Worry'?
- Microsoft Wrestles With .Net Framework Compatibility
While cute headlines may grab advertising clicks, you need to read past the titles to get the real story here:
Side by Side: Joel Spolsky has it right in the Marj Jo Foley article. The default binding behavior for an application is to bind to the version of the runtime it was built for. This includes, for example, your web sites in Asp.Net, where it is an explicit decision by the administrator to change the .NET Framework version for a vroot.
Minor Code Updates Required: I blogged already on all the work we have done to keep the API set compatible to minmize your developer related upgrade costs. As Soma points out in his blog, the first eWeek article explains that Infragistics ported 1.8 million lines of code without major issues. Mary Jo Foley's article also quotes Ryan Hoffman as having taken only one hour to update 20-30 lines of code out of thousands. I'm very happy to see these kinds of results. It validates all the effort we put into maintaining a high compatibility bar.
Only One Official .NET FX Redist: I understand the general care that Greg DiMichillie mentions one should take around shipping software, including his reference to GDI+ (remember my number one reason why I said I didn't want to build a linker?). However you should understand there is only one official redist, only one copy of the code on your machine, we don't statically link the .NET FX into your code, and we service all of our binaries in place. There is no case where we do not maintain strict control over the location of our binaries or our ability to service them.
I strongly encourage you to read through the entire content of these articles. Then go read this MSDN white paper which gives more technical details. And finally, give it a try on your application. It's really easy to see if your 1.x application will just work by adding the following to the <appname>.exe.config file:
where "v2.0.50215" is the version string for Beta 2 (as found in your %windir%\Microsoft.Net\Frameworks directory). I've tried this on countless applications. I have found issues, but the vast majority of applications simply boot up happily and run. Don't stop at the headlines. Give it a try yourself and let us know what you find.
[Note: I made a quick edit to fix the linker url]