共用方式為


Visual C++ 中的部署

在開發電腦以外的電腦上安裝應用程式稱為「部署」。 在另一部電腦上部署 Visual C++ 應用程式時,您必須安裝該應用程式及該應用程式相依的所有程式庫檔案。 Visual Studio 可透過三種方法在您部署應用程式時一併部署 Visual C++ 程式庫:「集中部署」、「本機部署」或「靜態連結」。 集中部署會將連結庫檔案放在 Windows 目錄中,其中所有應用程式都可以自動存取它們。 本機部署會將程式庫檔案放置在與應用程式相同的目錄中。 您必須自行重新部署任何本機部署的程式庫,才能更新它們。 靜態連結會將程式庫程式碼繫結到應用程式。 當您使用靜態連結時,您必須重新編譯並重新部署應用程式,以利用連結庫的任何更新。

在 Visual Studio 2015 中,Microsoft C 執行階段程式庫已重構為特定版本的本機程式庫元件,以及現在是 Windows 一部分的新通用 C 執行階段程式庫。 如需通用 CRT 部署的詳細資料,請參閱通用 CRT 部署

集中部署

在集中部署中,連結庫 DLL 檔案會安裝在 Windows\System32 目錄中,或針對 x64 系統上的 32 位連結庫檔案安裝 Windows\SysWow64 目錄。 集中部署的連結庫檔案可供其他應用程式使用。

若要集中部署 Visual C++ 程式庫,您可以使用兩個來源檔的其中一個進行安裝:

  • 可轉散發套件 檔案。 這些檔案是獨立的命令行可執行檔,其中包含壓縮格式的所有 C++ 可轉散發套件 連結庫。 最新的可轉散發套件可從Microsoft C++ 可轉散發套件 最新支援的下載取得。 當您使用可轉散發套件進行集中部署時,Windows Update 可以獨立服務連結庫。

  • 可轉散發合併模組.msm 檔案),您可以在應用程式的 Windows Installer (.msi) 檔案中包含這些模組。 這個方法已被取代,因為以這種方式部署的連結庫無法由 Windows Update 自動更新。 如需詳細資訊,請參閱使用合併模組轉散發

可轉散發套件檔案會安裝特定系統架構的所有 Visual C++ 連結庫。 例如,如果您的應用程式是針對 x64 建置的,您可以使用 vcredist_x64.exe 套件來安裝應用程式所使用的所有 Visual C++ 連結庫。 您可以先將應用程式安裝程式程式設計成在安裝應用程式之前,先將套件執行為必要條件。

使用可轉散發套件進行集中部署可讓 Windows Update 自動更新 Visual C++ 連結庫。 如需持續的安全性與功能,建議您在應用程式中使用連結庫 DLL,而不是靜態庫,並使用可轉散發套件和集中部署,而不是本機部署。

本機部署

本機部署會將程式庫檔案和可執行檔一同安裝在應用程式資料夾中。 不同的 C++ 可轉散發套件 連結庫版本可以安裝在相同的資料夾中,因為每個版本的檔名都包含其版本號碼。 例如,C++執行時間連結庫的第 12 版為 msvcp120.dll,而第 14 版為 msvcp140.dll

擴充至連結庫可能會分散到多個額外的 DLL,稱為 點連結庫。 例如,Visual Studio 2017 15.6 版中發行的標準連結庫中的某些功能已新增至 msvcp140_1.dll,以保留 的 msvcp140.dllABI 兼容性。 如果您使用 Visual Studio 2017 15.6 版(工具組 14.13)或更新版本,您可能需要在本機部署這些點連結庫和主要連結庫。 當 ABI 變更時,這些個別的點連結庫最終會新增至基底連結庫。

由於Microsoft無法自動更新本機部署的Visual C++ 連結庫,因此不建議對這些連結庫進行本機部署。 如果您決定使用可轉散發連結庫的本機部署,建議您實作自己的方法來自動更新本機部署的連結庫。

靜態連結

除了動態連結的程式庫,Visual Studio 還會提供其大部分的程式庫作為靜態程式庫。 您可以用靜態方式將靜態程式庫連結至應用程式,也就是說,將程式庫物件程式碼直接連結到應用程式。 靜態連結會建立沒有 DLL 相依性的單一二進位檔,因此您不需要個別部署 Visual C++ 連結庫檔案。 不過,不建議使用此方法,因為靜態連結庫無法就地更新。 若要在使用靜態連結時更新連結庫,您必須重新編譯和重新部署應用程式。

為部署問題疑難排解

Visual C++ 程式庫的載入順序與系統相關。 若要診斷載入器問題,請使用 depends.exewhere.exe。 如需詳細資訊,請參閱動態連結庫搜尋順序(Windows)。

另請參閱

部署傳統型應用程式
通用 CRT 部署