All GDR (general distribution release) class updates for the .NET Framework 2.0 Service Pack 2, the .NET Framework 3.0 Service Pack 2, and the .NET Framework 3.5 Service Pack 1 support the Dual Branch Servicing model.
Assume that you install a hotfix that supports Dual Branch Servicing for the .NET Framework 2.0 Service Pack 2, the .NET Framework 3.0 Service Pack 2, or the .NET Framework 3.5 Service Pack 1. In addition to the update appearing in the Currently installed programs list of the Add or Remove Programs item in Control Panel, you will also see an additional update (960043). This additional update is called the baseliner and is typical for all hotfixes that support Dual Branch Servicing.
This article describes Dual Branch Servicing for the .NET Framework 2.0 Service Pack 2, the .NET Framework 3.0 Service Pack 2, and the .NET Framework 3.5 Service Pack 1.
What is Dual Branch Servicing?
Updates for the .NET Framework and for Microsoft Visual Studio have traditionally been cumulative. For example, a binary always ships all previous servicing changes in that same binary. There are problems with this approach because it unintentionally ends up widely distributing hotfixes that were meant for limited distribution and that were developed to address a specific customer requirement with security updates and cumulative updates.
Having separate branches for hotfixes and GDR-class releases, such as security updates, eliminates the possibility of shipping functional fixes for hotfixes in GDR-class releases. Maintaining separate branches for LDR (limited distribution releases, such as hotfixes) and GDR (general distribution releases, such as updates, cumulative updates, and security updates) is called Dual Branch Servicing.
What does Dual Branch Servicing mean exactly?
With Dual Branch Servicing, updates for GDR class releases (updates, cumulative updates, and security updates) will contain two versions of the payload, a "clean" payload that carries only the security fix but no cumulative hotfixes and a second payload that contains the cumulative hotfixes together with the security fix.
The first "clean" payload would be installed for customers who have no hotfixes applied (most customers) and the second cumulative payload would be installed for customers who do have one or more hotfixes installed.
How does Dual Branch Servicing work?
When a customer installs a hotfix, the update is installed together with baseliner update 960043. This baseliner is like a flag in the computer that tells future updates for that product that a hotfix is present.
In the future, when the customer installs a GDR-class update (including a security update), that update looks for the baseliner. If the baseliner is not present because no previous hotfix was installed, the payload from the GDR branch is installed so that the hotfix is not included.
If the baseliner is found, then the payload from the LDR branch, such as the cumulative binary that includes a hotfix, is installed. This model prevents the installation of the GDR for customers who have hotfixes installed.
The advantage of this model is that if you install a GDR first, the GDR payload will then be applied. If you then install a hotfix, and the baseliner is present, the GDR will be automatically switched from the GDR branch payload to the LDR branch payload. This prevents a regression of the hotfix.
Frequently asked questions
Q1: Will Dual Branch Servicing be available for Visual Studio 2008 SP1?
A1: Support for the Dual Branch Servicing model is currently limited to the .NET Framework 2.0 SP2, the .NET Framework 3.0 SP2, and the .NET Framework 3.5 SP1. There is no plan to extend this feature to Visual Studio 2008 SP1.
Q2: What about older versions of the .NET Framework (1.0, 1.1, 2.0 RTM/SP1) and Visual Studio (2002, 2003, 2005)?
A2: The Dual Branch Servicing model is available starting with the .NET Framework 2.0 SP2, the .NET Framework 3.0 SP2, and the .NET Framework 3.5 SP1, and it will be available in all future versions of the .NET Framework. There is no plan to support this servicing model for legacy product versions.
Q3: Will Dual Branch Servicing be supported for the .NET Framework 4.0?
A3: Yes, the .NET Framework 4.0 will support the Dual Branch Servicing model.
Q4: Will carrying two payloads in the update make the updates larger?
A4: Because GDR class updates that support Dual Branch Servicing carry two payloads: one from the LDR branch and another from the GDR branch, these updates are slightly larger than equivalent updates that do not support Dual Branch Servicing. In most cases, this increase in file size is nominal and limited to a few megabytes (MB).
Q5: Do I have to do anything to indicate whether the LDR or the GDR payload should be applied?
A5: Under typical circumstances, no action is required by the user, the computer will automatically flag the presence of a hotfix on the computer by using the baseliner. Future GDRs will automatically determine whether the LDR or GDR payload should be applied based on the presence of the baseliner.
Q6: Do I have to do anything when I uninstall a GDR-class update (update, cumulative update, or security update)?
A6: No, you do not have to do anything special when you uninstall a GDR-class update.
Q7: Do I have to do anything when I uninstall a hotfix?
A7: No, you do not have to do anything special when you uninstall a hotfix.
Q8: What would occur if I removed the baseliner?
A8: Do not uninstall the Baseliner update 960043 manually by using the Add or Remove Programs item in Control Panel. This is an unsupported scenario, and future updates may not be applied correctly if you uninstall the baseliner update.
Q9: How do I bring my system back to the state in which only GDR payload applies after I install a GDR update?
A9: You have to uninstall and then reinstall the product to bring your system back to the state in which GDR payloads start applying. After you do this, make sure that you apply all the applicable security updates.