決定要轉散發哪些 DLL
當您建置應用程式時,如果該應用程式使用 Visual Studio 所提供的程式庫 DLL,則應用程式使用者的電腦上也必須要有這些 DLL,應用程式才能執行。 由於大部分的使用者可能未安裝 Visual Studio,因此您必須為它們提供這些 DLL。 Visual Studio 可讓這些 DLL 以可轉散發檔案的形式提供,您可以在應用程式安裝程式中包含這些 DLL。
為了讓您更輕鬆地將可轉散發 DLL 包含在安裝程式中,它們可作為獨立 可轉散發套件使用。 這些套件是使用集中部署在用戶計算機上安裝可轉散發檔案的架構特定可執行檔。 例如, vc_redist.x86.exe
安裝 x86 和 x64 計算機的 32 位連結庫、 vc_redist.x64.exe
安裝 x64 計算機的 64 位連結庫,以及 vcredist.ARM64.exe
安裝 ARM 和 ARM64 計算機的連結庫。 由於 Microsoft 可以使用 Windows Update 服務個別更新這些程式庫,因此建議集中部署。 除了 Visual Studio 安裝中的複本之外,目前的可轉散發套件也可供下載。 如需目前和舊版工具組最新支援的可轉散發套件連結,請參閱最新的支援 C++ 可轉散發套件 下載。 搜尋「C++ 可轉散發套件 套件」,即可找到my.visualstudio.com
特定舊版的可轉散發套件。
為了讓您更輕鬆地將可轉散發 DLL 包含在安裝程式中,它們可作為獨立 可轉散發套件使用。 這些套件是使用集中部署在用戶計算機上安裝可轉散發檔案的架構特定可執行檔。 例如, vcredist_x86.exe
安裝 x86 和 x64 計算機的 32 位連結庫、 vcredist_x64.exe
安裝 x64 計算機的 64 位連結庫,以及 vcredist_ARM.exe
安裝 ARM 電腦的連結庫。 由於 Microsoft 可以使用 Windows Update 服務個別更新這些程式庫,因此建議集中部署。 除了 Visual Studio 安裝中的複本之外,目前的可轉散發套件也可供下載。 如需目前和舊版工具組最新支援的可轉散發套件連結,請參閱 最新支援的Visual C++下載。 搜尋「C++ 可轉散發套件 套件」,即可找到my.visualstudio.com
特定舊版的可轉散發套件。
我們僅支援使用與工具組版本相同或更新版本的可轉散發套件。 您部署的主要可轉散發套件版本號碼必須符合用來建立應用程式的Visual Studio工具組版本,且次要版本必須相同或更高。 Visual Studio 2022、2019、2017 和 2015 全都有 相容的 工具組版本號碼。 針對這些版本,較新的Visual Studio可轉散發檔案可由舊版工具組所建置的應用程式使用。 例如,Visual Studio 2022 可轉散發檔案可由使用 Visual Studio 2017 或 2015 工具組建置的應用程式使用。 雖然它們可能相容,但我們不支援在使用較新的工具組所建置之應用程式中使用較舊的可轉散發套件檔案。 例如,不支援在使用 2019 工具組建置的應用程式中使用 2017 可轉散發檔案。
您也可以在合併模組中包含可轉散發 DLL 與安裝程式。 這個方法現在已被取代,因為以這種方式部署的連結庫無法由 Windows Update 自動更新。 可轉散發合併模組或Microsoft安裝程式模組(.msm
檔案)是 Visual Studio 安裝程式 中可用的選用元件。 安裝時,會在 Visual Studio 安裝目錄中 %VCToolsRedistDir%\MergeModules\
找到可轉散發 DLL 的合併模組。 在 Visual Studio 2015 和舊版 Visual Studio 中,這些檔案位於子目錄中的程式檔或 Program Files (x86) 目錄中Common Files\Merge Modules
。 如需使用這些檔案的詳細資訊,請參閱 使用合併模組轉散發元件。
個別的可轉散發 DLL 也會包含在 Visual Studio 的安裝中。 根據預設,它們會安裝在 [視覺效果 %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library]
] 資料夾中,其中 [architecture]
代表目標架構、 [toolset]
代表工具組版本,以及 [library]
代表連結庫。
您也可以在合併模組中包含可轉散發 DLL 與安裝程式。 這個方法現在已被取代,因為以這種方式部署的連結庫無法由 Windows Update 自動更新。 可轉散發 DLL 的可轉散發合併模組可在子目錄中的程式檔或 Program Files (x86) 目錄中Common Files\Merge Modules
找到。 如需使用這些檔案的詳細資訊,請參閱 使用合併模組轉散發元件。
個別的可轉散發 DLL 也會包含在 Visual Studio 的安裝中。 根據預設,它們會安裝在資料夾中的Visual Studio 2015 安裝目錄中 redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library]
,其中 [architecture]
代表目標架構、 [toolset]
代表工具組版本,而 [library]
是具有偵錯 DLL的偵錯連結庫。
使用這些目錄中找到的任何連結庫 DLL 檔案、可轉散發套件或合併模組的最新版本。 您可以透過將這些程式庫安裝在與您應用程式相同的目錄中,來使用這些程式庫進行本機部署。 由於您必須負責提供已部署應用程式的更新,因此不建議本機部署。 偏好使用可轉散發套件進行集中部署。
若要判斷必須隨應用程式一起轉散發的 DLL,請收集應用程式所依賴的 DLL 並做成一份清單。 這些 DLL 通常會列為連結器匯入連結庫輸入。 預設會包含特定程式庫,例如 vcruntime 和通用 C 執行階段程式庫 (UCRT)。 如果您的應用程式或其其中一個相依性用來 LoadLibrary
動態載入 DLL,該 DLL 可能不會列在連結器輸入中。 收集動態載入 DLL 清單的其中一種方式是在您的應用程式上執行 Dependency Walker (depends.exe
),如瞭解 Visual C++ 應用程式的相依性中所述。 不幸的是,此工具已過時,因此可能會回報找不到特定 DLL。
當您擁有相依性清單時,請將它與在 Microsoft Visual Studio 安裝目錄下找到之檔案中 Redist.txt
連結的清單進行比較。 或者,針對 Visual Studio 複本之Microsoft軟體授權條款的「可散發程式代碼檔案」一節中所參考的可轉散發 DLL 的「REDIST 清單」。 如需 Visual Studio 2022,請參閱 Visual Studio 2022 的可散發程式代碼。 針對 Visual Studio 2019,請參閱 Visual Studio 2019 的可散發程式代碼。 若為 Visual Studio 2017,請參閱 Microsoft Visual Studio 2017 的可散發程式碼 (含公用程式、擴充性及 BuildServer 檔案)。 若為 Visual Studio 2015,請參閱 Microsoft Visual Studio 2015 和 Microsoft Visual Studio 2015 SDK 的可散發程式碼 (含公用程式與 BuildServer 檔案)。 若為 Visual Studio 2013,可在 Microsoft Visual Studio 2013 和 Microsoft Visual Studio 2013 SDK 的可散發程式碼線上取得此清單。
在 Visual Studio 2015 之前的 Visual Studio 版本中,C 運行時間連結庫 (CRT) 包含在 中 msvc[version].dll
作為可轉散發 DLL。 在 Visual Studio 2015 中,CRT 中的函式已重構為 vcruntime 和 UCRT。 UCRT 現在是 Windows 10 和更新版本中由 Windows Update 管理的系統元件。 其適用於所有 Windows 10 和更新版本的作業系統。 若要將您的應用程式部署到舊版作業系統,您也可能需要轉散發 UCRT。 Visual Studio 可轉散發檔案中包含 UCRT 的早期版本。 此版本只會安裝在 Windows 10 之前的作業系統上,而且只有在尚未安裝任何版本的 UCRT 時。 如需適用於舊版系統且可作為 Microsoft 系統更新套件安裝的 UCRT 版本,請參閱 Microsoft 下載中心的 Windows 10 通用 C 執行階段。
您無法重新發佈 Visual Studio 中包含的所有檔案。 您只能轉散發在 或在線 「REDIST 清單」中指定的 Redist.txt
檔案。您也無法重新發佈應用程式的偵錯版本,或Microsoft所提供的 DLL 或連結庫偵錯版本。 您只能將偵錯可執行檔案和連結庫複製到您用於測試的電腦。 如需詳細資訊,請參閱 選擇部署方法。
下表描述您的應用程式可能依賴的部分 Visual C++ DLL。
Visual C++ 程式庫 | 描述 | 適用於 |
---|---|---|
vcruntime[version].dll |
機器碼的執行階段程式庫。 | 使用一般 C 和 C++ 語言啟動和終止服務的應用程式。 |
vccorlib[version].dll |
受控碼的執行階段程式庫。 | 針對受控碼使用 C++ 語言服務的應用程式。 |
msvcp[version].dll 和 msvcp[version_dotnumber].dll |
機器碼的 C++ Standard 程式庫。 | 使用 C++ Standard 程式庫的應用程式。 |
concrt[version].dll |
機器碼的並行執行階段程式庫。 | 使用並行執行階段的應用程式。 |
mfc[version].dll |
Microsoft Foundation Class (MFC) 程式庫。 | 使用 MFC 程式庫的應用程式。 |
mfc[version][language].dll |
Microsoft Foundation Class (MFC) 程式庫資源。 | 使用 MFC 特定語言資源的應用程式。 |
mfc[version]u.dll |
具有 Unicode 支援的 MFC 程式庫。 | 使用 MFC 程式庫並需要 Unicode 支援的應用程式。 |
mfcmifc80.dll |
MFC Managed 介面程式庫。 | 搭配使用 MFC 程式庫與 Windows Forms 控制項的應用程式。 |
mfcm[version].dll |
MFC Managed 程式庫。 | 搭配使用 MFC 程式庫與 Windows Forms 控制項的應用程式。 |
mfcm[version]u.dll |
具有 Unicode 支援的 MFC Managed 程式庫。 | 搭配使用 MFC 程式庫與 Windows Forms 控制項並需要 Unicode 支援的應用程式。 |
vcamp[version].dll |
機器碼的 AMP 程式庫。 | 使用 C++ AMP 程式庫程式碼的應用程式。 |
vcomp[version].dll |
機器碼的 OpenMP 程式庫。 | 使用 C++ OpenMP 程式庫程式碼的應用程式。 |
注意
您不再需要以個別 DLL 的形式轉散發 Active Template Library。 其功能已移至標頭和靜態程式庫。
如需如何使用您的應用程式轉散發這些 DLL 的詳細資訊,請參閱 重新發佈 Visual C++ 檔案。 如需範例,請參閱 部署範例。
一般而言,您不需要轉散發系統 DLL,因為它們是操作系統的一部分。 但是,還是有一些例外情形,例如當應用程式會在數個版本的 Microsoft 作業系統上執行時。 在此情況下,請務必閱讀對應的授權條款。 此外,請嘗試透過 Windows Update、Service Pack,或使用 Microsoft 提供的可轉散發套件,來升級系統 DLL。