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