Starting Visual Studio 2005 the MFC and C-Runtime Dlls were deployed using the side-by-side approach in WinSxS and a manifest. Still it was possible to deploy the required DLLs together with the application to allow X-Copy-Deployment.
This works the following way:
1. if the Visual Studio 2012 Redistributable is not installed, our application uses the local DLLs provided in special assembly folders.
2. but if the Visual Studio 2012 Redistributable is installed, our application uses the system DLLs.
The advantage is, that the possibly security patched versions of the DLLs are used if they are installed on the system (using policies). Only if the redistributable is missing, the local DLLs are used.
After upgrading to Visual Studio 2012 I have now detected, that the deployment has changed. The Dlls are located in the c:\windows\system32 folder and if a local copy exists, the local one is used.
So we are back in the days of DLL hell again!
I do not see, why the deployment strategie has changed (again). Please go back to the Visual Studio 2005 deployment model, because it prevents using outdated DLLs from a local application directory.