How to distribute runtime libraries (CRT)

I create an application after converting a VC ++ 6 workspace to Visual C ++ 2008 express. The build itself is successful, but the real problem I have is the generated manifests that look like this:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.30729.1' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

My question is:

How can I restrict the manifest to list ONE version only, preferably 9.0.21022.8. so that I can bind the necessary C-Run time dependencies inside my application?

I know that a possible reason for this problem is related to a dependency on some library that uses 9.0.21022.8, and my VC ++ Express 2008 can use 9.0.30729.1. therefore, both are indicated as dependencies.

Note:

b) http://www.codeproject.com/Tips/211756/How-to-Distribute-C-run-time-CRT-Libraries-with-Yo?display=Print, DLL CRT Microsoft.VCXX.CRT.manifest .

+5
1

Visual Studio 2008 9.0.21022.8. , , Visual Studio ( ).

: 9.0.30729.1 Service Pack 1 9.0.30729.6161 1 (SP1) . .

- , , 9.0.21022.8, , 9.0.30729.1. , , ( ):

dumpbin /directives <name>.lib

, , ( ) (9.0.21022.8 - ), , Visual Studio:

_BIND_TO_CURRENT_VCLIBS_VERSION=1

-, , , (, , :).

, 9.0.30729.1, 9.0.21022.8, .

, Visual Studio . , , , , .

, , , , WinSxS, , . .

, , , SO.

+9

All Articles