L'App ne fonctionne pas avec VS 2008 SP1 Dll, la version précédente fonctionne avec les versions RTM

Depuis le passage à partir de Visual Studio 6 pour Visual Studio 2008, nous avons été à l'aide de la MFC90.dll et msvc[pr]90.dll avec les fichiers manifest dans un privé côté-à-côte, de configuration, de manière à ne pas vous soucier de versions ou de les installer dans le système.

Pré-SP1, ce qui fonctionnait bien (et fonctionne toujours très bien sur nos ordinateurs de développement). Maintenant que nous avons fait quelques tests post-SP1, j'ai été en tirant sur mes cheveux depuis hier matin.

Tout d'abord, notre installateur NSIS script tire les dll et les fichiers manifeste à partir du dossier redist. Ce n'est plus correct, que l'application encore des liens vers la version RTM.

J'ai donc ajouté le définir pour _BIND_TO_CURRENT_VCLIBS_VERSION=1 à l'ensemble de nos projets, de sorte que ils vont utiliser le SP1 Dll dans le dossier redist (ou ultérieure en tant que nouveau service packs de sortir). Il m'a fallu des heures pour trouver ce.

J'ai une double vérification de l'généré les fichiers manifeste dans les fichiers intermédiaires dossier à partir de la compilation, et ils correctement les 9.0.30729.1 versions SP1. J'ai le double et le triple vérifié dépend d'une machine de nettoyage: tous les liens vers les locaux dll sans erreurs.

L'exécution de l'application obtient toujours le message d'erreur suivant:

L'application n'a pas réussi à s'initialiser correctement (0xc0150002). Cliquez sur OK pour fermer l'application.

Aucun des recherches que j'ai faites sur google ou microsoft sont venus avec tout ce qui se rapporte à mes questions spécifiques (mais il y a des hits de retour à 2005 avec ce message d'erreur).

Tout avait le même problème avec le SP1?

Options:

  • Trouver le problème et de le résoudre de sorte qu'il fonctionne comme il se doit (de préférence)
  • Installer le redist
  • de déterrer les vieux RTM les dll et les fichiers manifeste et enlever le #define utiliser les modèles actuels. (Je l'ai eu dans une version antérieure du programme d'installation de construire, car Microsoft explosions de votre dossier redist!)

Edit: j'ai essayé de re-construction avec les définir éteint (lien vers la version RTM dll), et qui fonctionne aussi longtemps que la RTM dll sont installés dans le dossier. Si le SP1 de dll sont supprimés, il obtient l'erreur suivante:

c:\Program Files\...\...\X.exe

Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. La réinstallation de cette application peut corriger ce problème.

A personne d'autre n'avait à traiter de cette question?

Edit: Juste pour sourire, j'ai téléchargé et exécuté le vcredist_x86.exe pour VS2008SP1 sur ma machine de test. Ce fonctionne. Avec le SP1 Dll. Et mon RTM lié app. Mais PAS dans le privé side-by-side de distribution qui a travaillé pré-SP1.

InformationsquelleAutor crashmstr | 2008-09-12