Installing Windows SDK for Server 2008 (v6.1) after VS2008 SP1 causes conflicts with Security Update (KB971092)

Issue: If you install the Windows SDK for Windows Server 2008 and .NET Framework 3.5, on top of Visual Studio 2008 Service Pack1, some CRT files will revert  back to RTM version.  (See this post for more information about this issue) This can cause conflicts when you install patches or updates such as the Security Update for Microsoft Visual Studio 2008 Service Pack 1: July 28, 2009 (KB971092) , which may lead to compile errors similar to this:

· error C2039: '_Swap_adl' : is not a member of 'std'    c:\program files\microsoft visual studio 9.0\vc\include\xutility    2764

· error C3861: '_Swap_adl': identifier not found    c:\program files\microsoft visual studio 9.0\vc\include\xutility    2764

Cause: This problem occurs when you install the Windows SDK for Windows Server 2008 and .NET Framework 3.5 on top of a post-RTM Visual Studio 2008 Service Pack, Feature Pack, or QFE. Visual Studio 2008 and the Windows SDK share compiler and CRT packages. Because the Windows SDK v6.1 includes the RTM version of the CRT, installing the Windows SDK second causes any non-versioned CRT files to be reverted back to Visual Studio 2008 RTM version.  When you install a service patch, the patch will assume that all the SP1 files are still present.

Workaround: Ensure that you are using the Visual Studio 2008 SP1 version of the CRT by installing the Windows SDK for Windows Server 2008 and .NET Framework 3.5 first, then re-installing Visual Studio 2008 SP1.  Then you can apply the Security Update. 

Caution: Running “Repair” on the Windows SDK will cause the CRT files to go back to RTM state and should be avoided.