Share via


C++-Laufzeitframeworkpakete für Desktop-Brücke

In diesem Artikel wird beschrieben, wie Sie einen Desktop-Brücke Container erstellen, der die richtigen C++-Runtimebibliotheken enthält.

Ursprüngliche Produktversion: Windows 10
Ursprüngliche KB-Nummer: 3176696

Zusammenfassung

Windows-Desktopanwendungen, die von den C++-Runtimebibliotheken abhängig sind, müssen die entsprechende Version des C++-Runtime-Frameworkpakets für Desktop-Brücke während der Erstellung des Anwendungspakets angeben. Dies muss geschehen, anstatt nur die C++-Runtimebibliotheken neu zu verteilen, die in Visual Studio oder der Visual C++-Runtime redistributable (VCRedist) enthalten sind. Windows-Desktopanwendungen, die in einem Desktop-Brücke-Container ausgeführt werden, können die in Visual Studio oder VCRedist enthaltenen C++-Runtimebibliotheken nicht verwenden. Eine Anwendung, die in einem Desktop-Brücke Container ausgeführt wird und eine falsche Version der C++-Laufzeitbibliotheken verwendet, schlägt möglicherweise fehl, wenn sie versucht, auf Ressourcen wie das Dateisystem oder die Registrierung zuzugreifen. In diesem Artikel wird erläutert, wie Sie einen Desktop-Brücke Container erstellen, der die richtigen C++-Runtimebibliotheken enthält.

Installieren und Aktualisieren von Desktopframeworkpaketen

Microsoft stellt C++-Runtime-Frameworkpakete bereit, mit denen Anwendungen aus Desktopanwendungen, die über den Windows Store verteilt werden, auf die C++-Runtime verweisen können. Diese Pakete werden über den Windows Store verteilt und aktualisiert und ähnlich wie C++-UWP-Frameworkpakete behandelt.

Für Entwicklungszwecke ist die aktuelle Version (v14.0) von Debug- und Verkaufs-Appx-Paketen in Visual Studio 2019 enthalten, wenn Sie die Workload Universelle Windows-Plattform Entwicklung mit der optionalen Komponente für universelle Windows-Tools in C++ (v142) auswählen. Die Pakete finden Sie unter %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0.

In einigen Szenarien wie Windows-Sandbox oder in denen Anwendungen auf Offlinecomputern ausgeführt werden, fällt es Entwicklern möglicherweise leichter, die Pakete, die ihren Bereitstellungsarchitekturen entsprechen, über einen der folgenden Links herunterzuladen und sie mithilfe des Add-AppxPackage PowerShell-Cmdlets manuell zu installieren:

Legacy-Desktopframeworkpakete

Ältere C++-Runtime-Frameworkpakete für Desktopanwendungen, v11.0 und v12.0, können von diesen Speicherorten heruntergeladen und installiert werden:

Die C++-Runtime-Frameworkpakete werden in einen Unterordner unter %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktopkopiert. Sie können die Pakete manuell mithilfe des Add-AppxPackage PowerShell-Cmdlets installieren.

Verweisen auf die Desktopframeworkpakete

Geben Sie in der AppxManifest.xml-Datei Ihrer Anwendung einen PackageDependency Wert an, der dem entsprechenden Frameworkpaket entspricht:

  • Version 11.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.110.00.UWPDesktop" MinVersion="11.0.61135.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"/>
    </Dependencies>
    
  • Version 12.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.120.00.UWPDesktop" MinVersion="120.40653.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
        <PackageDependency Name="Microsoft.VCLibs.120.00.UWPDesktop" MinVersion="12.0.40653.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
    </Dependencies>
    
  • Version 14.0:

    <Dependencies>
        <PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.24217.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
    </Dependencies>
    

Die Anwendung installiert nun die C++-Runtime-DLLs aus dem Abhängigkeitspaket, wenn es bereitgestellt wird.

References

Verwenden von Visual C++-Runtime im Centennial-Projekt