用于桌面桥的 C++ 运行时框架包

本文介绍如何创建包含正确 C++ 运行时库的桌面桥容器。

原始产品版本:  Windows 10
原始 KB 编号:   3176696

摘要

Windows依赖于 C++ 运行时库的桌面应用程序必须在创建应用程序包期间为桌面桥指定相应版本的 C++ 运行时框架包。 必须执行此操作,而不只是重新分发包含在 Visual Studio 或 Visual C++ 运行时可再发行 (VCRedist) 中的 C++ 运行时库。 Windows在 桌面桥 容器中运行的桌面应用程序不能使用 Visual Studio 或 VCRedist 附带的 C++ 运行时库。 在桌面桥容器中运行且使用 C++ 运行时库版本不正确的应用程序在尝试访问文件系统或注册表等资源时可能会失败。 本文讨论如何创建包含正确 C++ 运行时库的桌面桥容器。

如何安装和更新桌面框架包

Microsoft 提供 C++ 运行时框架包,允许应用程序从通过 Windows Store 分发的桌面应用程序引用 C++ 运行时。 这些包通过 Windows 应用商店分发和更新,处理方式与 C++ UWP 框架包类似。

出于开发目的,使用可选的 C++ (v142) 通用Windows工具组件选择 通用 Windows 平台开发 工作负荷时,调试和零售应用包的当前版本 (v14.0) 都包含在 2019 Visual Studio。 可以在下面 %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0找到包。

在某些情况下,例如Windows 沙盒或应用程序在脱机计算机上运行时,开发人员可能会发现,从以下链接之一下载与其部署体系结构对应的包并使用 Add-AppxPackage PowerShell cmdlet 手动安装它们会更容易:

旧版桌面框架包

可以从以下位置下载和安装适用于桌面应用程序的旧版 C++ 运行时框架包 v11.0 和 v12.0:

C++ 运行时框架包将复制到下 %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop方的子文件夹。 可以使用 Add-AppxPackage PowerShell cmdlet 手动安装包。

如何引用桌面框架包

在应用程序的AppxManifest.xml文件 ,指定 PackageDependency 对应于相应框架包的值:

  • 版本 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>
    
  • 版本 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>
    
  • 版本 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>
    

应用程序现在将在部署依赖项包时安装 C++ 运行时 DLL。

References

在百年项目中使用 Visual C++ 运行时