views:

195

answers:

1

My application is compiled on a development PC with a manifest 762:

However at runtime, on another release PC, the application uses the 4053 version of the file. c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCR80.DLL

Somewhere along the execution of my application I get a runtime error pointing to the msvcr80.dll. I suspect that the problem might be caused because the application use a DLL at runtime that was not used during the build.

If I check in the WinSxS folder of the release PC I have both 762 and 4053 version of the CRT. Why does the application uses 4053 instead of the one used in the manifest?

Thanks.

+1  A: 

Because of a "publisher policy" that redirects requested DLL versions. Your manifest should not ask for 762 anymore, it's got cooties. You'll need to deploy the security update to your machine so the vc\include\crtassem.h gets updated.

Hans Passant
It is possible to install an application configuration file with the same bindingRedirect element used in the policy file. App config files take precedence over publisher policy files so if the publisher policy is causing problems, you can "fix" the problems on a case by case basis. Ultimately though, get the patch installed on the dev PCs and fix the problem at the source.
Chris Becke