Bereitstellung in Visual C++

Die Installation einer Anwendung auf einem anderen Computer als Ihrem Entwicklungscomputer wird als Bereitstellung bezeichnet. Wenn eine Visual C++-Anwendung auf einem anderen Computer bereitgestellt werden soll, müssen sowohl die Anwendung selbst sowie alle Bibliotheksdateien installiert werden, von denen sie abhängt. Visual Studio bietet drei Möglichkeiten, die Visual C++-Bibliotheken zusammen mit Ihrer Anwendung bereitzustellen: die zentrale Bereitstellung, die lokale Bereitstellung und die statische Verknüpfung. Die zentrale Bereitstellung platziert die Bibliotheksdateien unter dem Windows-Verzeichnis, in dem alle Anwendungen automatisch darauf zugreifen können. Bei der lokalen Bereitstellung werden die Bibliotheksdateien im selben Verzeichnis wie die Anwendung gespeichert. Sie müssen alle lokal bereitgestellten Bibliotheken manuell erneut bereitstellen, um diese zu aktualisieren. Bei der statischen Verknüpfung wird der Bibliothekscode an Ihre Anwendung gebunden. Sie müssen Ihre Anwendung neu kompilieren und erneut bereitstellen, um alle Aktualisierungen der Bibliotheken zu nutzen, wenn Sie statische Verknüpfungen verwenden.

In Visual Studio 2015 wurde die Microsoft C-Laufzeitbibliothekibliothek in versionsspezifische lokale Bibliothekskomponenten umgestaltet. Außerdem gibt es eine neue universelle C-Laufzeitbibliothek, die jetzt in Windows enthalten ist. Weitere Informationen zur Bereitstellung der universellen CRT finden Sie unter Universal CRT deployment (Bereitstellung der universellen CRT).

Zentrale Bereitstellung

In der Windows\System32 zentralen Bereitstellung werden Bibliotheks-DLL-Dateien im Verzeichnis oder für 32-Bit-Bibliotheksdateien auf x64-Systemen, dem Windows\SysWow64 Verzeichnis installiert. Zentral bereitgestellte Bibliotheksdateien sind für andere Anwendungen verfügbar.

Wenn Sie Visual C++-Bibliotheken zentral bereitstellen möchten, können Sie eine dieser beiden Quellen verwenden, um die Dateien zu installieren:

  • Verteilbare Paketdateien . Diese Dateien sind eigenständige ausführbare Befehlszeilendateien, die alle Visual C++-Redistributable-Bibliotheken in komprimierter Form enthalten. Die neuesten Redistributable-Pakete sind über Microsoft Visual C++ Redistributable Latest Supported Downloads verfügbar. Wenn Sie die redistributable-Pakete für die zentrale Bereitstellung verwenden, kann Windows Update die Bibliotheken unabhängig voneinander bedienen.

  • Weiterverteilbare Zusammenführungsmodule (.msm Dateien), die Sie in die Windows Installer-Datei (.msi) Ihrer Anwendung aufnehmen können. Diese Methode ist veraltet, da auf diese Weise bereitgestellte Bibliotheken nicht automatisch von Windows Update aktualisiert werden können. Weitere Informationen finden Sie unter Redistributing mithilfe von Zusammenführungsmodulen.

Eine Redistributable-Paketdatei installiert alle Visual C++-Bibliotheken für eine bestimmte Systemarchitektur. Wenn Ihre Anwendung beispielsweise für x64 erstellt wurde, können Sie das vcredist_x64.exe Paket verwenden, um alle visual C++-Bibliotheken zu installieren, die Ihre Anwendung verwendet. Sie können das Anwendungsinstallationsprogramm so programmieren, dass das Paket als Voraussetzung ausgeführt wird, bevor Sie die Anwendung installieren.

Mithilfe eines Redistributable-Pakets kann Windows Update die Visual C++-Bibliotheken automatisch aktualisieren. Für fortgesetzte Sicherheit und Funktionalität empfehlen wir, die Bibliotheks-DLLs in Ihrer Anwendung anstelle statischer Bibliotheken zu verwenden und Redistributable-Pakete und zentrale Bereitstellung anstelle der lokalen Bereitstellung zu verwenden.

Lokale Bereitstellung

Bei der lokalen Bereitstellung werden Bibliotheksdateien im Anwendungsordner zusammen mit der ausführbaren Datei installiert. Verschiedene Versionen von Visual C++ Redistributable-Bibliotheken können im selben Ordner installiert werden, da der Dateiname jeder Version die Versionsnummer enthält. Beispielsweise lautet msvcp120.dllVersion 12 der C++-Laufzeitbibliothek , und Version 14 lautet msvcp140.dll.

Erweiterungen für eine Bibliothek können über mehrere zusätzliche DLLs verteilt werden, die als Punktbibliotheken bezeichnet werden. Beispielsweise wurde einige Funktionen in der Standardbibliothek hinzugefügt, die in Visual Studio 2017, Version 15.6, veröffentlicht wurde msvcp140_1.dll, um die ABI-Kompatibilität msvcp140.dllzu erhalten. Wenn Sie Visual Studio 2017, Version 15.6 (Toolset 14.13) oder höher, verwenden, müssen Sie diese Punktebibliotheken und die Standard-Bibliothek möglicherweise lokal bereitstellen. Diese separaten Punktbibliotheken werden schließlich der Basisbibliothek hinzugefügt, wenn sich die ABI ändert.

Da Microsoft nicht automatisch lokal bereitgestellte Visual C++-Bibliotheken aktualisieren kann, wird die lokale Bereitstellung dieser Bibliotheken nicht empfohlen. Wenn Sie die lokale Bereitstellung der redistributable-Bibliotheken verwenden möchten, empfehlen wir, ihre eigene Methode zum automatischen Aktualisieren der lokal bereitgestellten Bibliotheken zu implementieren.

Statische Verknüpfung

Zusätzlich zu den dynamisch verknüpften Bibliotheken stellt Visual Studio die meisten Bibliotheken als statische Bibliotheken bereit. Sie können eine statische Bibliothek statisch mit Ihrer Anwendung verknüpfen. Das bedeutet, dass der Objektcode der Bibliothek direkt in der Anwendung verknüpft wird. Statische Verknüpfung erstellt eine einzelne Binärdatei ohne DLL-Abhängigkeit, sodass Sie die Visual C++-Bibliotheksdateien nicht separat bereitstellen müssen. Wir empfehlen diesen Ansatz jedoch nicht, da statisch verknüpfte Bibliotheken nicht aktualisiert werden können. Wenn Sie eine verknüpfte Bibliothek aktualisieren möchten, wenn Sie statische Verknüpfungen verwenden, müssen Sie die Anwendung erneut kompilieren und erneut bereitstellen.

Behandeln von Problemen bei der Bereitstellung

Die Ladereihenfolge von Visual C++-Bibliotheken hängt vom System ab. Um Ladeprobleme zu diagnostizieren, verwenden depends.exe oder where.exe. Weitere Informationen finden Sie unter Suchreihenfolge der Dynamic Link Library (Windows).For more information, see Dynamic-link library search order (Windows)

Siehe auch

Bereitstellen von Desktopanwendungen
Universelle CRT-Bereitstellung