C++-Runtime-Frameworkpakete für Desktop-Brücke

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

Originalversion des Produkts:   Windows 10
Ursprüngliche KB-Nummer:   3176696

Zusammenfassung

Windows Desktopanwendungen, die von den C++-Runtime-Bibliotheken abhängig sind, müssen die entsprechende Version des C++-Runtime-Framework-Pakets für Desktop-Brücke während der Erstellung des Anwendungspakets angeben. Dies muss erfolgen, anstatt nur die C++-Runtime-Bibliotheken, die in Visual Studio enthalten sind, oder die Visual C++-Runtime redistributable (VCRedist) zu verteilen. Windows Desktopanwendungen, die in einem Desktop-Brücke-Container ausgeführt werden, können die C++-Runtime-Bibliotheken, die in Visual Studio oder VCRedist enthalten sind, 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++-Runtime-Bibliotheken enthält.

Installieren und Aktualisieren von Desktopframeworkpaketen

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

Für Entwicklungszwecke ist die aktuelle Version (v14.0) von Debug- und Einzelhandels-AppX-Paketen in Visual Studio 2019 enthalten, wenn Sie die Universelle Windows-Plattform-Entwicklungsworkload mit der optionalen Komponente "Universelle Windows Tools" (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, finden Entwickler es möglicherweise einfacher, die Pakete, die ihren Bereitstellungsarchitekturen entsprechen, von einem der folgenden Links herunterzuladen und manuell mithilfe des Add-AppxPackage PowerShell-Cmdlets zu installieren:

Legacy-Desktopframeworkpakete

Ältere C++-Runtime-Framework-Pakete 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.

So verweisen Sie 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 sie bereitgestellt wird.

References

Verwenden von Visual C++ Runtime im Centennial-Projekt