Ustalanie, które biblioteki DLL są przeznaczone do ponownej dystrybucji

Podczas kompilowania aplikacji korzystającej z bibliotek DLL dostarczonych przez program Visual Studio użytkownicy aplikacji muszą również mieć te biblioteki DLL na komputerach, aby aplikacja mogła działać. Ponieważ większość użytkowników prawdopodobnie nie ma zainstalowanego programu Visual Studio, musisz podać te biblioteki DLL. Program Visual Studio udostępnia te biblioteki DLL jako pliki redystrybucyjne, które można uwzględnić w instalatorze aplikacji.

Aby ułatwić dołączanie bibliotek DLL pakietu redystrybucyjnego do instalatora, są one dostępne jako autonomiczne pakiety redystrybucyjne. Te pakiety to pliki wykonywalne specyficzne dla architektury, które używają centralnego wdrożenia do instalowania plików redystrybucyjnych na komputerze użytkownika. Na przykład vc_redist.x86.exe instaluje biblioteki 32-bitowe dla komputerów x86 i x64, vc_redist.x64.exe instaluje biblioteki 64-bitowe dla komputerów x64 i vcredist.ARM64.exe instaluje biblioteki dla komputerów ARM i ARM64. Zalecamy centralne wdrożenie, ponieważ firma Microsoft może użyć usługi Windows Update, aby niezależnie zaktualizować te biblioteki. Oprócz kopii w instalacji programu Visual Studio bieżące pakiety redystrybucyjne są dostępne do pobrania. Aby uzyskać linki do najnowszych obsługiwanych pakietów redystrybucyjnych dla bieżących i starszych zestawów narzędzi, zobacz Najnowsze obsługiwane pliki do pobrania pakiet redystrybucyjny programu Visual C++. Określone wcześniejsze wersje pakietów redystrybucyjnych można znaleźć, wyszukując my.visualstudio.com ciąg "pakiet redystrybucyjny programu Visual C++ Packages".

Aby ułatwić dołączanie bibliotek DLL pakietu redystrybucyjnego do instalatora, są one dostępne jako autonomiczne pakiety redystrybucyjne. Te pakiety to pliki wykonywalne specyficzne dla architektury, które używają centralnego wdrożenia do instalowania plików redystrybucyjnych na komputerze użytkownika. Na przykład vcredist_x86.exe instaluje biblioteki 32-bitowe dla komputerów x86 i x64, vcredist_x64.exe instaluje biblioteki 64-bitowe dla komputerów x64 i vcredist_ARM.exe instaluje biblioteki dla komputerów ARM. Zalecamy centralne wdrożenie, ponieważ firma Microsoft może użyć usługi Windows Update, aby niezależnie zaktualizować te biblioteki. Oprócz kopii w instalacji programu Visual Studio bieżące pakiety redystrybucyjne są dostępne do pobrania. Aby uzyskać linki do najnowszych obsługiwanych pakietów redystrybucyjnych dla bieżących i starszych zestawów narzędzi, zobacz Najnowsze obsługiwane pliki do pobrania języka Visual C++. Określone wcześniejsze wersje pakietów redystrybucyjnych można znaleźć, wyszukując my.visualstudio.com ciąg "pakiet redystrybucyjny programu Visual C++ Packages".

Obsługujemy tylko użycie pakietu redystrybucyjnego, który jest taki sam jak lub nowszy niż wersja zestawu narzędzi. Numer wersji głównej wdrażanego pakietu redystrybucyjnego musi być zgodny z wersją zestawu narzędzi programu Visual Studio używanego do tworzenia aplikacji, a wersja pomocnicza musi być taka sama lub nowsza. Wszystkie programy Visual Studio 2022, 2019, 2017 i 2015 mają zgodne numery wersji zestawu narzędzi. W przypadku tych wersji wszystkie nowsze pliki redystrybucyjne programu Visual Studio mogą być używane przez aplikacje utworzone przez zestaw narzędzi ze starszej wersji. Na przykład pliki redystrybucyjne programu Visual Studio 2022 mogą być używane przez aplikacje utworzone przy użyciu zestawu narzędzi programu Visual Studio 2017 lub 2015. Chociaż mogą być zgodne, nie obsługujemy używania starszych plików redystrybucyjnych w aplikacjach utworzonych przy użyciu nowszego zestawu narzędzi. Na przykład użycie plików pakietu redystrybucyjnego 2017 w aplikacjach utworzonych przy użyciu zestawu narzędzi 2019 nie jest obsługiwane.

Istnieje również możliwość uwzględnienia bibliotek DLL pakietu redystrybucyjnego z instalatorem w modułach scalania. Ta metoda jest teraz przestarzała, ponieważ biblioteki wdrożone w ten sposób nie mogą być automatycznie aktualizowane przez usługę Windows Update. Moduły scalania redystrybucyjnego lub moduły Instalatora Microsoft (.msmpliki) są opcjonalnymi składnikami dostępnymi w Instalator programu Visual Studio. Po zainstalowaniu moduły scalania bibliotek DLL pakietu redystrybucyjnego znajdują się w katalogu instalacyjnym programu Visual Studio w obszarze %VCToolsRedistDir%\MergeModules\. W programie Visual Studio 2015 i starszych wersjach programu Visual Studio te pliki znajdują się w katalogu Program Files lub Program Files (x86) w podkataloguCommon Files\Merge Modules. Aby uzyskać więcej informacji na temat używania tych plików, zobacz Redystrybucja składników przy użyciu modułów scalania.

Poszczególne biblioteki DLL redystrybucyjne są również zawarte w instalacji programu Visual Studio. Domyślnie są one instalowane w folderach Wizualizacja %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] , gdzie [architecture] reprezentuje architekturę docelową, [toolset] reprezentuje wersję zestawu narzędzi i [library] reprezentuje bibliotekę.

Istnieje również możliwość uwzględnienia bibliotek DLL pakietu redystrybucyjnego z instalatorem w modułach scalania. Ta metoda jest teraz przestarzała, ponieważ biblioteki wdrożone w ten sposób nie mogą być automatycznie aktualizowane przez usługę Windows Update. Moduły scalania redystrybucyjnego dla bibliotek DLL pakietu redystrybucyjnego znajdują się w katalogu Program Files lub Program Files (x86) w podkatalogu Common Files\Merge Modules . Aby uzyskać więcej informacji na temat używania tych plików, zobacz Redystrybucja składników przy użyciu modułów scalania.

Poszczególne biblioteki DLL redystrybucyjne są również zawarte w instalacji programu Visual Studio. Domyślnie są one instalowane w katalogu instalacyjnym programu Visual Studio 2015 w redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] folderach, gdzie [architecture] reprezentuje architekturę docelową, [toolset] reprezentuje wersję zestawu narzędzi i [library] jest biblioteką debugowania zawierającą biblioteki DLL debugowania.

Użyj najnowszej wersji dowolnego pliku DLL biblioteki, pakietu redystrybucyjnego lub modułu scalania znajdującego się w tych katalogach. Te biblioteki mogą być używane do wdrożenia lokalnego, instalując je w tym samym katalogu co aplikacja. Nie zalecamy lokalnego wdrażania, ponieważ sprawia, że odpowiadasz za dostarczanie aktualizacji do wdrożonych aplikacji. Preferowane jest centralne wdrożenie przy użyciu pakietów redystrybucyjnych.

Aby określić, które biblioteki DLL należy ponownie dystrybuować z aplikacją, zbierz listę bibliotek DLL, od których zależy aplikacja. Te biblioteki DLL są zwykle wyświetlane jako dane wejściowe biblioteki importu do konsolidatora. Niektóre biblioteki, takie jak vcruntime i Universal C Runtime Library (UCRT), są domyślnie dołączane. Jeśli aplikacja lub jedna z jej zależności używa LoadLibrary do dynamicznego ładowania biblioteki DLL, ta biblioteka DLL może nie być wymieniona w danych wejściowych konsolidatora. Jednym ze sposobów zbierania listy dynamicznie ładowanych bibliotek DLL jest uruchomienie programu Dependency Walker () w aplikacji, zgodnie z opisem w temacie Understanding the Dependencies of a Visual C++ Application (depends.exeOpis zależności aplikacji Visual C++). Niestety to narzędzie jest nieaktualne i może zgłosić, że nie może znaleźć niektórych bibliotek DLL.

Jeśli masz listę zależności, porównaj ją z listą połączoną w pliku znajdującym się w Redist.txt katalogu instalacyjnym programu Microsoft Visual Studio. Lub na "listę REDIST" bibliotek DLL pakietu redystrybucyjnego, które są przywoływały się w sekcji "Pliki kodu dystrybucyjnego" postanowień licencyjnych dotyczących oprogramowania firmy Microsoft dla kopii programu Visual Studio. W przypadku programu Visual Studio 2022 zobacz Kod dystrybucyjny dla programu Visual Studio 2022. W przypadku programu Visual Studio 2019 zobacz Kod dystrybucyjny dla programu Visual Studio 2019. W przypadku programu Visual Studio 2017 zobacz Kod dystrybucyjny dla programu Microsoft Visual Studio 2017 (obejmuje programy narzędziowe, rozszerzalność i pliki BuildServer). W przypadku programu Visual Studio 2015 zobacz Kod dystrybucyjny dla programów Microsoft Visual Studio 2015 i Microsoft Visual Studio 2015 SDK (obejmuje programy narzędziowe i pliki BuildServer). W przypadku programu Visual Studio 2013 lista jest dostępna w trybie online w kodzie dystrybucyjnym dla programów Microsoft Visual Studio 2013 i Microsoft Visual Studio 2013 SDK.

W wersjach programu Visual Studio przed programem Visual Studio 2015 biblioteka środowiska uruchomieniowego języka C (CRT) została dołączona jako biblioteka DLL redystrybucyjna w programie msvc[version].dll. W programie Visual Studio 2015 funkcje w narzędziu CRT zostały refaktoryzowane w programie vcruntime i UCRT. UCRT jest teraz składnikiem systemowym w systemie Windows 10 i nowszym zarządzanym przez usługę Windows Update. Jest ona dostępna we wszystkich systemach operacyjnych Windows 10 i nowszych. Aby wdrożyć aplikację we wcześniejszych systemach operacyjnych, może być konieczne ponowne dystrybuowanie narzędzia UCRT. Wczesna wersja narzędzia UCRT jest zawarta w plikach redystrybucyjnych programu Visual Studio. Ta wersja jest zainstalowana tylko w systemach operacyjnych starszych niż Windows 10 i tylko wtedy, gdy nie zainstalowano już żadnej wersji narzędzia UCRT. Aby uzyskać zainstalowaną wersję narzędzia UCRT dla systemów obniżania poziomu jako pakiet Microsoft System Update, zobacz Środowisko uruchomieniowe uniwersalnego języka C systemu Windows 10 w Centrum pobierania Microsoft.

Nie można ponownie rozpowszechniać wszystkich plików zawartych w programie Visual Studio. Możesz rozpowszechniać tylko pliki określone na liście redystrybucji lub Redist.txt w trybie online "Lista REDIST". Nie można również ponownie dystrybuować wersji debugowania aplikacji ani debugowania wersji bibliotek dll lub bibliotek dostarczonych przez firmę Microsoft. Pliki wykonywalne i biblioteki debugowania można kopiować tylko na maszyny używane do testowania. Aby uzyskać więcej informacji, zobacz Wybieranie metody wdrażania.

W poniższej tabeli opisano niektóre biblioteki DLL języka Visual C++, od których może zależeć aplikacja.

Biblioteka Visual C++ opis Dotyczy
vcruntime[version].dll Biblioteka środowiska uruchomieniowego dla kodu natywnego. Aplikacje korzystające z normalnych usług uruchamiania i kończenia języka C i C++.
vccorlib[version].dll Biblioteka środowiska uruchomieniowego dla kodu zarządzanego. Aplikacje korzystające z usług językowych C++ dla kodu zarządzanego.
msvcp[version].dll i msvcp[version_dotnumber].dll Standardowa biblioteka języka C++ dla kodu natywnego. Aplikacje korzystające ze standardowej biblioteki języka C++.
concrt[version].dll Biblioteka środowiska uruchomieniowego współbieżności dla kodu natywnego. Aplikacje korzystające ze środowiska uruchomieniowego współbieżności.
mfc[version].dll Biblioteka klas programu Microsoft Foundation (MFC). Aplikacje korzystające z biblioteki MFC.
mfc[version][language].dll Zasoby biblioteki klas programu Microsoft Foundation (MFC). Aplikacje korzystające z określonych zasobów językowych dla MFC.
mfc[version]u.dll Biblioteka MFC z obsługą formatu Unicode. Aplikacje korzystające z biblioteki MFC i wymagają obsługi Unicode.
mfcmifc80.dll Biblioteka interfejsów zarządzanych MFC. Aplikacje korzystające z biblioteki MFC z kontrolkami formularzy systemu Windows.
mfcm[version].dll Biblioteka zarządzana MFC. Aplikacje korzystające z biblioteki MFC z kontrolkami formularzy systemu Windows.
mfcm[version]u.dll Biblioteka zarządzana MFC z obsługą formatu Unicode. Aplikacje korzystające z biblioteki MFC z kontrolkamiformularzy systemu Windows i wymagają obsługi Unicode.
vcamp[version].dll Biblioteka AMP dla kodu natywnego. Aplikacje korzystające z kodu biblioteki C++ AMP.
vcomp[version].dll Biblioteka OpenMP dla kodu natywnego. Aplikacje korzystające z kodu biblioteki OpenMP języka C++.

Uwaga

Nie trzeba już rozpowszechniać biblioteki aktywnych szablonów jako oddzielnej biblioteki DLL. Jej funkcjonalność została przeniesiona do nagłówków i biblioteki statycznej.

Aby uzyskać więcej informacji na temat redystrybucji tych bibliotek DLL w aplikacji, zobacz Redistributing Visual C++ files (Redystrybucja plików Visual C++). Przykłady można znaleźć w temacie Przykłady wdrażania.

Zazwyczaj nie trzeba rozpowszechniać bibliotek DLL systemu, ponieważ są one częścią systemu operacyjnego. Mogą jednak wystąpić wyjątki, na przykład gdy aplikacja będzie działać w kilku wersjach systemów operacyjnych firmy Microsoft. W takim przypadku należy przeczytać odpowiednie postanowienia licencyjne. Ponadto spróbuj uaktualnić biblioteki DLL systemu za pośrednictwem usługi Windows Update, dodatków Service Pack lub pakietów redystrybucyjnych udostępnianych przez firmę Microsoft.

Zobacz też

Wybieranie metody wdrażania
Wdrażanie aplikacji klasycznych