2008-12-29 6 views
1

Nous avons une application compilé à l'aide MSVC 2K5, SP1 (version 762 msvcrt80)Pourquoi les fenêtres côte à côte (winSxS) installent-elles la politique de mise à niveau automatique en cas de problèmes connus entre les versions?

Tout va bien, jusqu'à jusqu'à ce que quelqu'un installe sur la même machine .Net3.0SP1, et avec elle msvcrt80 la version 1433 est installé et politique pour mettre à jour automatiquement.

Maintenant nous avons des accidents aléatoires partout et des clients mécontents. Je comprends que nous pouvons ajuster nos fichiers manifestes pour forcer l'utilisation d'une version spécifique, mais j'ai seulement trouvé la façon vraiment laide de copier les détails qui sont générés automatiquement et de les modifier à la main. Pouvons-nous plutôt nous débarrasser de la stupide politique de 'mise à niveau' dans le répertoire winSxS? Existe-t-il une option/un drapeau à compiler pour une version spécifique seulement et qui génère automatiquement les manifestes?

Répondre

1

Recherchez le manifeste généré pour votre version spécifique du CRT. Ensuite, ajoutez un pragma au fichier principal de votre application:

#pragma comment(linker,"/manifestdependency:\"type='win32' "   \ 
     "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' "    \ 
     "version='" _CRT_ASSEMBLY_VERSION "' "       \ 
     "processorArchitecture='x86' "         \ 
     "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") 
Questions connexes