Wdrożenie środowiska Universal CRT

W programie Visual Studio .NET za pośrednictwem programu Visual Studio 2013 każde główne wydanie kompilatora i narzędzi języka C++ zawiera nową, autonomiczną wersję biblioteki Microsoft C Runtime (CRT). Te autonomiczne wersje CRT były niezależne od siebie i do różnych stopni niezgodne ze sobą. Na przykład biblioteka CRT używana przez program Visual Studio 2012 miała wersję 11 o nazwie msvcr110.dll, a CRT używana przez program Visual Studio 2013 miała wersję 12 o nazwie msvcr120.dll. Począwszy od programu Visual Studio 2015, nie jest już tak. Program Visual Studio 2015 i nowsze wersje programu Visual Studio używają jednego uniwersalnego CRT.

Universal CRT (UCRT) to składnik systemu operacyjnego Microsoft Windows. Jest on dołączony do systemu operacyjnego w systemie Windows 10 lub nowszym oraz windows Server 2016 lub nowszym. Funkcja UCRT jest dostępna przy użyciu usługi Windows Update w starszych systemach operacyjnych, które są nadal objęte rozszerzoną obsługą. Lokalne wdrożenie uniwersalnego CRT jest obsługiwane z pewnymi ograniczeniami.

Centralne wdrożenie

Preferowaną metodą centralnego instalowania uniwersalnego CRT jest użycie usługi Microsoft Windows Update. Universal CRT to zalecana aktualizacja dla wszystkich obsługiwanych systemów operacyjnych Microsoft Windows, więc domyślnie większość maszyn instaluje ją w ramach zwykłego procesu aktualizacji. Początkowa wersja universal CRT została KB2999226. Późniejsza aktualizacja z różnymi poprawkami błędów została wprowadzona w KB3118401 i wprowadzono więcej aktualizacji z dalszymi poprawkami błędów i nowymi funkcjami. Aby uzyskać najnowsze aktualizacje, wyszukaj support.microsoft.com frazę "Universal C Runtime" lub "Universal CRT".

Nie wszystkie komputery z systemem Microsoft Windows regularnie instalują aktualizacje przy użyciu usługi Windows Update, a niektóre mogą nie instalować wszystkich zalecanych aktualizacji. Aby obsługiwać korzystanie z aplikacji utworzonych przy użyciu zestawów narzędzi programu Visual Studio 2015 i nowszych języków C++ na tych maszynach, dostępne są pliki pakietu redystrybucyjnego Universal CRT dla dystrybucji offline. Te pliki redystrybucyjne można pobrać z jednego z powyższych linków KB. Pakiet redystrybucyjny Universal CRT wymaga zaktualizowania maszyny do bieżącego dodatku Service Pack. Na przykład pakiet redystrybucyjny dla systemu Windows 7 zostanie zainstalowany tylko w systemie Windows 7 z dodatkiem SP1, a nie Windows 7 RTM.

Universal CRT to podstawowa zależność bibliotek języka C++. Pakiet redystrybucyjny programu Visual C++ (VCRedist) instaluje początkową wersję universal CRT (wersja 10.0.10240) na maszynach, które nie mają jeszcze zainstalowanej wersji. Ta wersja jest wystarczająca do spełnienia zależności biblioteki języka C++. Jeśli aplikacja zależy od nowszej wersji uniwersalnego CRT, musisz użyć usługi Windows Update, aby zapewnić aktualność maszyny. Możesz też zainstalować jawnie wersję narzędzia UCRT. Najlepiej zainstalować środowisko uruchomieniowe uniwersalnego języka C przy użyciu usługi Windows Update lub msU przed zainstalowaniem narzędzia VCRedist. Ta kolejność instalacji może pomóc uniknąć wielu wymaganych ponownych uruchomień.

Nie wszystkie systemy operacyjne kwalifikują się do najnowszego uniwersalnego środowiska uruchomieniowego języka C za pośrednictwem usługi Windows Update. W systemie Windows 10 lub Windows 11 centralnie wdrożona wersja jest zgodna z wersją systemu operacyjnego. Aby zaktualizować środowisko uruchomieniowe uniwersalnego języka C, należy zaktualizować system operacyjny. W przypadku systemu Windows Vista za pośrednictwem systemu Windows 8.1 najnowsze dostępne uniwersalne środowisko uruchomieniowe języka C jest oparte na rocznicowej aktualizacji systemu Windows 10 (wersja 10.0.14393).

Wdrożenie lokalne

Lokalne wdrożenie uniwersalnego CRT jest obsługiwane, ale nie jest zalecane zarówno ze względów wydajności, jak i zabezpieczeń. Biblioteki DLL dla wdrożenia lokalnego są uwzględniane jako część zestawu Windows SDK w podkatalogu Windows Kits\10\Redist\ucrt\DLLs według architektury komputera. Wymagane biblioteki DLL obejmują ucrtbase.dll zestaw bibliotek DLL usługi przesyłania dalej APISet o nazwie api-ms-win-*.dll. Zestaw bibliotek DLL wymaganych w każdym systemie operacyjnym różni się. Zdecydowanie zaleca się uwzględnienie wszystkich bibliotek DLL podczas wdrażania lokalnego.

Istnieją dwa ograniczenia dotyczące lokalnego wdrażania, o których należy pamiętać:

  • W systemach Windows 10 i Windows 11 uniwersalny CRT w katalogu systemowym jest zawsze używany, nawet jeśli aplikacja zawiera lokalną kopię universal CRT. Dzieje się tak nawet wtedy, gdy kopia lokalna jest nowsza, ponieważ universal CRT jest podstawowym składnikiem systemu operacyjnego w systemie Windows 10 lub nowszym.

  • Wersje systemu Windows przed windows 8: Universal CRT nie można spakować lokalnie z wtyczką, jeśli znajduje się w dowolnym miejscu, ale głównym katalogiem wykonywalnym aplikacji. Biblioteki DLL usługi przesyłania dalej APISet nie mogą rozpoznać ucrtbase.dll pomyślnie w tym przypadku. Oto kilka zalecanych rozwiązań alternatywnych:

    • Statyczne łączenie uniwersalnego CRT
    • Centralne wdrażanie uniwersalnego CRT lub
    • Umieść pliki universal CRT w tym samym katalogu co aplikacja.

Wdrażanie w systemie Microsoft Windows XP

Zestawy narzędzi programu Visual Studio 2015 i Visual Studio 2017 nadal obsługują tworzenie oprogramowania do użycia w systemie Microsoft Windows XP. Istnieje wersja uniwersalnego CRT dla systemu Microsoft Windows XP. System operacyjny Microsoft Windows XP nie jest już w podstawowej ani rozszerzonej pomocy technicznej. Dlatego centralne wdrożenie uniwersalnego CRT w systemie Microsoft Windows XP różni się od innych systemów operacyjnych.

Po zainstalowaniu pakiet redystrybucyjny programu Visual C++ w systemie Windows XP program bezpośrednio instaluje uniwersalny plik CRT i wszystkie jego zależności w katalogu systemowym. Nie jest instalowana ani zależna od żadnej usługi Windows Update. Moduły scalania redystrybucyjnego Microsoft_VC<version>_CRT_<target>.msm , pliki, wykonaj te same czynności.

Lokalne wdrożenie uniwersalnego CRT w systemie Windows XP jest takie samo jak w innych obsługiwanych systemach operacyjnych.

Ważne

Obsługa bibliotek środowiska uruchomieniowego dla systemu Windows XP nie jest już dostępna w najnowszych Pakiet redystrybucyjny Visual C++ dla Visual Studio 2015, 2017, 2019 i 2022. Ostatnią redystrybucją do obsługi systemu Windows XP jest wersja 16.7 (plik w wersji 14.27.29114.0). Jeśli aplikacje systemu Windows XP są wdrażane przy użyciu lub aktualizowane w nowszej wersji pakietu redystrybucyjnego, aplikacje nie będą uruchamiane. Aby uzyskać więcej informacji i jak uzyskać wersję pakietu redystrybucyjnego obsługującego system Windows XP, zobacz Konfigurowanie programów dla systemu Windows XP.

Zobacz też