Visual C++ 中的部署
当您将应用程序部署到另一台计算机时,必须安装该应用程序本身以及它所依赖的任何库文件。 Visual Studio 2012 中的 Visual C++ 为您提供了三种部署 Visual C++ 运行时及应用程序的方式:集中部署、本地部署和静态链接。
集中部署
集中部署是指 Visual C++ DLL 安装在 System32 目录中。 若要集中部署应用程序,则可以使用以下方法之一:
**VCRedist_**architecture.exe 命令行工具,其中 architecture 是 x32、x64 或 ia64。
合并模块。
VCRedist_体系结构.exe 安装用于特定硬件平台的所有库。 合并模块(或 .msm 文件)提供了一种标准方法,开发人员可通过这种方法向其应用程序提供共享 Windows Installer 组件和安装逻辑。
集中部署的主要优点是可以自动完成紧急维护。 如果发现严重的安全漏洞,则 Microsoft 会自动更新集中部署的库文件。
本地部署
本地部署是指应用程序的库文件安装在应用程序文件夹中。 若要本地部署应用程序,只需将可执行文件及其关联的库文件复制到某个文件夹中即可。
可以并行存在不同的库版本,因为文件名包含版本号,例如 CRT DLL 版本 11 是 msvcr110.dll)。
与集中部署的库不同,Microsoft 不会自动更新本地库。 如果您决定使用本地部署,则还应实现自己的库更新方法。
静态链接
您可以将应用程序静态链接到任何库(例如 CRT、MFC 或 ATL)以生成不依赖于 DLL 的可执行文件。 静态链接的优点是可将应用程序的部署从一台计算机复制到另一台计算机,而无需同时复制库文件。 如果您使用的是静态链接且 Microsoft 更新您所链接到的库,则您的应用程序无法使用更新的库。
安全漏洞
在安全漏洞的情况下,Microsoft 为受影响的库提供安全修补程序。 是应用程序的编写者负责部署在具有易受攻击库的计算机上修补程序。
如果安全漏洞被视为严重漏洞且需要紧急维护,则 Microsoft 会使用 Microsoft Update 对集中安装特定 Visual C++ 库的所有计算机进行维护。 如果您的应用程序使用的是本地库文件,则您必须自己做好紧急维护的准备。
疑难解答
若要诊断加载程序问题,请使用 depends.exe 或 where.exe。 Visual C++ 库的加载顺序与系统有关。 有关更多信息,请参见 动态链接库 (dll) 搜索顺序 (窗口)。