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

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

原始产品版本: Windows 10
原始 KB 数: 3176696

总结

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

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

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

出于开发目的,当选择具有可选C++(v143)通用 Windows 工具组件的通用 Windows 平台开发工作负载时,Visual Studio 2022 中包括调试和零售 appx 包的当前版本(v14.0)。 可以在以下找到 %ProgramFiles(x86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0包。

注意

现在已弃用以下包下载链接,将来可能不再有效。 请确保使用上述方法获取框架包。

旧版桌面框架包

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

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

如何引用桌面框架包

在应用程序的 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。

参考

在 Centennial 项目中使用 Visual C++ Runtime