2010-04-20 3 views
0

J'ai une application qui contient un projet VC++ (avec des projets C#). Auparavant, (c'est-à-dire au cours de la dernière année environ) lorsqu'une génération a été effectuée, Visual Studio 2005 semble cibler la version d'exécution VC++ 8.0.50727.762. Au moins, c'est-ce que le fichier Assembly.dll.intermediate.manifest me dit:Comment définir quelle version des cibles Visual Studio 2005 de VC++ runtime

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

Ce numéro de version correspond au numéro de version de Visual Studio 2005. L'application a bien fonctionné lors du déploiement sur le serveur Web. Le soleil brillait, les oiseaux chantaient et tout allait bien au monde.

Maintenant, quelque chose a changé. Je ne sais pas quoi - un patch de sécurité, un obscur paramétrage de Visual Studio ou quelque chose comme ça. Maintenant, Visual Studio 2005 semble cibler la mauvaise version de l'exécution du VC:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 
    <dependency> 
    <dependentAssembly> 
     <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4053' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 
    </dependentAssembly> 
    </dependency> 
</assembly> 

Quand je Déployez l'application du serveur Web, je reçois la redoutée Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte. Réinstaller l'application peut résoudre ce problème. (Exception de HRESULT: 0x800736B1) erreur.

Ce problème se produit même lorsque je recompile les versions précédentes de l'application. Je peux absolument garantir que rien du tout a changé dans la solution - nous compressons tout le contenu de la solution dans le cadre du processus de construction et l'archiver. J'ai décompressé un certain nombre d'entre eux dans un répertoire temp, vérifié que le fichier manifeste précédent fait référence à 8.0.50727.762, recompilé en utilisant exactement la même commande à la ligne de commande, puis vérifié que le nouveau fichier manifeste se réfère maintenant à 8.0.50727.4053. Je suis en utilisant Microsoft Visual Studio 2005 version 8.0.50727.762 (SP.050727-7600) et Microsoft Visual C++ 2005 77646-008-0000007-41610.

Pourquoi Visual Studio doit-il revenir à une version précédente de l'environnement d'exécution VC++? Comment puis-je spécifier quelle version utiliser? Qu'est-ce qui ne va pas ici?

Mise à jour

OMG - Je suis un idiot. X.7> X.4, mais, X.762 < X.4053 où X est un numéro de version. Donc 8.0.50727.4053 est plus récent que 8.0.50727.762. Tout cela a du sens maintenant. Je laisse cela comme un rappel personnel pour toutes les fois que je pense que je suis la personne la plus intelligente du monde ...

Répondre

1

Ce qui s'est probablement passé, c'est que votre machine dev a installé une nouvelle mise à jour de service qui met à jour le runtime VC++. Pas grand-chose, installez simplement toutes vos mises à jour nécessaires sur votre serveur web et les choses seront de nouveau pêcheuses.

Si vous avez vraiment besoin de revenir en arrière, alors vous devez trouver et désinstaller la mise à jour qui modifie la bibliothèque d'exécution, il n'y a aucun moyen de changer l'exécution sélectionnée en 2005, elle utilisera la plus récente date celui qu'il trouve.

0

Utilisez _BIND_TO_CURRENT_XXX_VERSION 1 (où XXX est CRT/MFC/ATL/OPENMP) pour choisir entre VCRedist de VistualStudio RTM et le dernier sur votre boîte de dev.

http://msdn.microsoft.com/en-us/library/cc664727%28VS.90%29.aspx

PS: Pas beaucoup sûr mais il y a eu des problèmes signalés avec _BIND_TO_CURRENT_VCLIBS_VERSION, donc une meilleure utilisation pour chaque macro MFC/ATL etc.

Questions connexes