重新分发应用程序并将其绑定到特定库

更新: 2008 年 7 月

Visual Studio 的库在发行之后会经常更新。例如,在安装 Service Pack 时就会进行更新。若应用程序是使用更新的库设计的,则其可能会依赖最新发行版中的某些更改。此时,若将应用程序传送给未安装相同库的用户,应用程序可能会出现意外行为。为防止出现这种意外行为,您可以将应用程序绑定到库的特定版本。

默认绑定行为

本节介绍用 Visual C++ 2008 和更高发行版编译的应用程序的默认行为。在编译应用程序时,它会绑定到可用库的原始发行版。即使您的计算机上安装了更高的发行版本,也是如此。例如,如果您的计算机上安装了 Visual C++ 2008 SP1,则在此计算机上编译的任何应用程序都仍将依赖 Visual C++ 2008 的原始发行版。

如果您是通过在中心位置安装来部署应用程序,则此行为不会造成任何后果。使用这种分发方案时,最新的库将始终对最终用户可用。但如果使用本地部署方法(例如,如如何:使用 XCopy 进行部署主题中所述,使用私有程序集),则这种行为具有重大意义。

借助默认绑定行为,可以在获取新发行版之后重新编译您的程序,还可以分发新的可执行文件。已安装所需库的最终用户将只需要新的可执行文件;您不必打包和重新安装最新的库。

说明:

如果您的应用程序依赖最新发行版中引入的功能,则必须分发并重新安装新库,否则应用程序将无法运行。

如何绑定到特定版本

如果希望强制应用程序要求在计算机上安装最新的库,请使用下面的一行或多行代码:

#define _BIND_TO_CURRENT_CRT_VERSION 1;
#define _BIND_TO_CURRENT_ATL_VERSION 1;
#define _BIND_TO_CURRENT_MFC_VERSION 1;
#define _BIND_TO_CURRENT_OPENMP_VERSION 1;

借助下面的代码行,可以将应用程序绑定到所有 Visual C++ 库的当前版本。此代码行的效果是上面所有代码行的效果之和。

#define _BIND_TO_CURRENT_VCLIBS_VERSION 1;
说明:

建议您在命令行级别定义这些宏。如果您更愿意在代码中包括这些定义,则必须将它们放在每个编译单元的最前面,例如 stdafx.h 中的前几行。

如果将应用程序绑定到一组库,则在装有这些库的早期版本的计算机上,应用程序将无法运行。如果将应用程序绑定到由最少库组成的特定版本,则建议您随应用程序一起提供所需版本的库。

请参见

概念

重新发布 Visual C++ 文件

修订记录

日期

修订记录

原因

2008 年 7 月

新增主题。

SP1 功能更改。