分享方式:


通用 CRT 部署

從 Visual Studio .NET 到 Visual Studio 2013,C++ 編譯器和工具的每個主要版本都包含 Microsoft C 執行階段 (CRT) 程式庫的新獨立版本。 這些 CRT 獨立版本彼此無關,且在不同程度上互不相容。 例如,Visual Studio 2012 所使用的 CRT 程式庫是第 11 版,名為 msvcr110.dll,而 Visual Studio 2013 所使用的 CRT 是第 12 版,名為 msvcr120.dll。 從 Visual Studio 2015 開始,就不再如此。 Visual Studio 2015 和更新版本的 Visual Studio 全都使用一個通用 CRT。

通用 CRT (UCRT) 是 Microsoft Windows 作業系統元件。 它包含在 Windows 10 或更新版本中的作業系統中,以及 Windows Server 2016 或更新版本。 UCRT 可在仍在延伸支援的舊版作業系統上使用 Windows Update。 支援通用 CRT 的本機部署,但有一些限制。

集中部署

集中安裝通用 CRT 的慣用方法是使用 Microsoft Windows Update。 通用 CRT 是所有支援的 Microsoft Windows 作業系統的建議更新 ;因此根據預設,大部分的電腦都會在定期更新程序期間安裝它。 通用 CRT 的初始版本KB2999226 。 稍後在KB3118401 進行了各種錯誤修正的更新,而且有更多更新有進一步的錯誤修正和新功能。 如需最近的更新,請搜尋 support.microsoft.com 「通用 C 執行時間」或「通用 CRT」。

並非所有的 Microsoft Windows 電腦都會使用 Windows Update 定期安裝更新,而且某些電腦可能不會安裝所有建議的更新。 為了支援使用這些電腦上使用 Visual Studio 2015 和更新版本的 C++ 工具組所建置的應用程式,有通用 CRT 可轉散發檔案可供離線散發。 這些可轉散發檔案可以從上述其中一個 KB 連結下載。 通用 CRT 可轉散發套件需要機器已更新為目前的 Service Pack。 因此,比方說,Windows 7 的可轉散發套件只能安裝到 Windows 7 SP1,而不是 Windows 7 RTM。

通用 CRT 是 C++ 程式庫的基本相依性。 C++ 可轉散發套件 (VCRedist) 會在尚未安裝通用 CRT (10.0.10240 版) 的電腦上安裝初始版本。 此版本足以滿足 C++ 程式庫相依性。 如果您的應用程式相依于較新版本的通用 CRT,您必須使用 Windows Update 讓電腦完全處於最新狀態。 或者,明確安裝該版本的 UCRT。 最好先使用 Windows Update 或 MSU 安裝通用 C 執行時間,再安裝 VCRedist。 此安裝順序有助於避免多次必要的重新開機。

並非所有作業系統都有資格透過 Windows Update 取得最新的通用 C 執行時間。 在 Windows 10 或 Windows 11 上,集中部署的版本符合作業系統的版本。 若要進一步更新通用 C 執行時間,您必須更新作業系統。 針對 Windows Vista 到 Windows 8.1,最新的可用通用 C 執行時間是以 Windows 10 年度更新版(10.0.14393 版)為基礎。

本機部署

支援本機部署通用 CRT,但基於效能和安全性原因不建議使用。 本機部署的 DLL 會依電腦架構包含在 Windows SDK Windows Kits\10\Redist\ucrt\DLLs 的子目錄中。 所需的 DLL 包含 ucrtbase.dll 和一組名為 api-ms-win-*.dll 的 APISet 轉寄站 DLL。 每個作業系統上所需的 DLL 集合會有所不同。 強烈建議您在本機部署時包含所有 DLL。

本機部署有兩項要注意的限制:

  • 在 Windows 10 和 Windows 11 上,系統目錄中的通用 CRT 一律會使用,即使應用程式包含通用 CRT 的應用程式本機複本也一樣。 即使本機複本較新,也是如此,因為通用 CRT 是 Windows 10 和更新版本的核心作業系統元件。

  • Windows 8 之前的 Windows 版本:如果通用 CRT 位於主要應用程式可執行檔目錄,則無法使用外掛程式在本機封裝。 在此案例中,APISet 轉寄站 DLL 無法成功解析 ucrtbase.dll 。 一些建議的替代解決方案包括:

    • 以靜態方式連結通用 CRT,
    • 集中部署通用 CRT,或
    • 將通用 CRT 檔案放在與應用程式相同的目錄中。

Microsoft Windows XP 上的部署

Visual Studio 2015 和 Visual Studio 2017 工具組會繼續支援開發可在 Microsoft Windows XP 上使用的軟體。 Microsoft Windows XP 的通用 CRT 版本。 Microsoft Windows XP 作業系統已不再是主流或延伸支援。 因此,將通用 CRT 集中部署至 Microsoft Windows XP 與其他作業系統不同。

在 Windows XP 上安裝C++ 可轉散發套件時,它會直接將通用 CRT 及其所有相依性安裝到系統目錄中。 它不會安裝或相依于任何 Windows Update。 可轉散發合併模組檔案 Microsoft_VC<version>_CRT_<target>.msm 會執行相同的動作。

在 Windows XP 上本機部署通用 CRT 的作業與其他支援作業系統上的相同。

重要

Visual Studio 2015、2017、2019 和 2022 的最新C++ 可轉散發套件已不再提供 Windows XP 的執行時間程式庫支援。 支援 Windows XP 的最後一個可轉散發套件是 16.7 版(檔案版本 14.27.29114.0)。 如果您的 Windows XP 應用程式已使用 或 更新為更新為可轉散發套件的更新版本,則不會執行應用程式。 如需詳細資訊,以及如何取得支援 Windows XP 的可轉散發套件版本,請參閱 設定 Windows XP 的程式。

另請參閱