Sunday, November 6, 2011

Manifest Hell issue after installing Service Pack 1 for Visual Studio 2008


Installing Service Pack 1 for Visual Studio 2008 causes serious issue called "Microsoft manifest hell". Application created with Visual Studio fails to start and following message is displayed (or something similar depending on Windows version):

The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log for more detail.

The problem is that there are multiple Microsoft CRT/ATL/MFC library entries in your exe/dll manifest, for example:

<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>

There are two entries for Microsoft.VC90.CRT library (one with 9.0.21022.8 and another with 9.0.30729.1 version).

One (or more) of following definitions should be included in order to avoid this issue:

#define _BIND_TO_CURRENT_CRT_VERSION 1
#define _BIND_TO_CURRENT_ATL_VERSION 1
#define _BIND_TO_CURRENT_MFC_VERSION 1
#define _BIND_TO_CURRENT_OPENMP_VERSION 1

The best approach is to include _BIND_TO_CURRENT_CRT_VERSION=1 definition (or one one of above definitions) in Preprocessor Definitions for all Visual Studio projects in solution.

Note that all above definitions may be replace by one _BIND_TO_CURRENT_VCLIBS_VERSION=1 definition.

1 comment:

  1. i run my application in visual studio 2010 express and when i run,it gives me an error that:- "the application has failed to start because application configuration is incorrect.Review the manifest file for possible errors"

    my debug manifest is:-






















    my release manifest is:-























    how to resolve it????

    ReplyDelete