Came across a very interesting article on Future of Assembly Versioning, co-authored by one of my favorite authors – Jeff Richter.
The author runs us through a little bit of history in Component versioning, starting off with COM, where we had an infamous problem commonly termed as “DLL Hell“. This problem was tackled in .NET effectively by having Strong Naming, but what resulted was a complicated version policy scheme, the problem which is commonly called “Policy Hell“.
The author also mentions how both these issues are (sort of) handled in the forthcoming Longhorn / Orcas releases. It is pretty interesting that there would be two types Assemblies – Platform and Library. The Platform type would need to be used in cases where strict backward compatibility is required. So the onus is on the developer to make sure about backward compatibility. Another interesting feature accompanying Platform assemblies is Interim Roll Back, where, in the event where a new version breaks an application, admins can actually roll back to a previous version. Any later updates to the assembly would automatically roll forward the existing (rolled back) assembly. On the other hand, Library assemblies are used in the case where the developer is free to introduce any breaking changes (or innovate as the author puts it), without worrying about backward compatibility. Do read the article for more..
The author presses the point that there is no set solution to component versioning problems and even the proposed solution might be changed considering the fact that it is early days for Longhorn and Orcas!