Udostępnij przez


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 redystrybucyjnych bibliotek DLL do instalatora, są one dostępne jako samodzielne 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 pakiety redystrybucyjne programu Visual C++ do pobrania. 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 redystrybucyjnych 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 "pakiety redystrybucyjne programu Visual C++".

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 redystrybucyjnych z 2017 roku w aplikacjach utworzonych przy użyciu zestawu narzędzi z 2019 roku nie jest obsługiwane.

Istnieje również możliwość dołączenia 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 (pliki .msm) są opcjonalnymi składnikami dostępnymi w Instalatorze Visual Studio. Po zainstalowaniu moduły scalania dla bibliotek DLL redystrybucyjnych 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 scalających.

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

Istnieje również możliwość uwzględnienia bibliotek DLL pakietu redystrybucyjnego z instalatorem w modułach konsolidacji. 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 Merge Modules.

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 linkera. 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 linkera. Jednym ze sposobów zbierania listy dynamicznie ładowanych bibliotek DLL jest uruchomienie programu Dependency Walker (depends.exe) w aplikacji, zgodnie z opisem w temacie Opis zależności aplikacji Visual C++. Niestety, to narzędzie jest nieaktualne i może informować, że nie znajduje 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ływane w sekcji "Pliki kodu dystrybucyjnego" warunków licencji oprogramowania Microsoft dla twojej kopii 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ć instalowalną wersję UCRT dla starszych systemów jako pakiet aktualizacji systemu Microsoft, zobacz Windows 10 Universal C Runtime w Centrum pobierania Microsoft.

Nie można ponownie rozpowszechniać wszystkich plików zawartych w programie Visual Studio. Możesz rozpowszechniać tylko pliki określone w Redist.txt lub w online "REDIST list". Nie można również redystrybuować wersji debug aplikacji ani wersji debug bibliotek DLL 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 Concurrency Runtime (środowiska 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 Windows Forms.
mfcm[version].dll Biblioteka zarządzana MFC. Aplikacje korzystające z biblioteki MFC z kontrolkami Windows Forms.
mfcm[version]u.dll Biblioteka zarządzana MFC z obsługą formatu Unicode. Aplikacje korzystające z Biblioteki MFC z kontrolkami formularzy Windows i wymagające 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 desktopowych