Visual c++ 当版本之间存在已知问题时,为什么windows并排(winSxS)安装自动升级策略?

Visual c++ 当版本之间存在已知问题时,为什么windows并排(winSxS)安装自动升级策略?,visual-c++,msvcrt,side-by-side,Visual C++,Msvcrt,Side By Side,我们有一个应用程序编译使用MSVC2K5,SP1(版本762 msvcrt80) 一切都很好,直到有人在同一台机器上安装.Net3.0SP1,同时安装了msvcrt80版本1433和自动升级的策略 现在我们到处都有随机的撞车事件和不开心的顾客 我知道我们可以调整清单文件以强制使用特定版本,但我只发现了复制自动生成的详细信息并手动修改的丑陋方式。对于大量需要修复的应用程序来说,这尤其令人不快 我们能不能改掉winSxS目录中愚蠢的“升级”策略? 是否有一个选项/标志可以仅为特定版本编译,并且仍然自

我们有一个应用程序编译使用MSVC2K5,SP1(版本762 msvcrt80)

一切都很好,直到有人在同一台机器上安装.Net3.0SP1,同时安装了msvcrt80版本1433和自动升级的策略

现在我们到处都有随机的撞车事件和不开心的顾客

我知道我们可以调整清单文件以强制使用特定版本,但我只发现了复制自动生成的详细信息并手动修改的丑陋方式。对于大量需要修复的应用程序来说,这尤其令人不快

我们能不能改掉winSxS目录中愚蠢的“升级”策略?
是否有一个选项/标志可以仅为特定版本编译,并且仍然自动生成清单?

为您的特定版本的CRT查找生成的清单。然后将pragma添加到应用程序的主文件中:

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

查找为特定版本的CRT生成的清单。然后将pragma添加到应用程序的主文件中:

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