如何为C++WinRT UWP应用创建Windows应用打包(WAP)项目?
解决C++/WinRT UWP + 完全信任Win32程序打包问题及MSB3774错误
先解决MSB3774错误
这个错误是因为WAP项目指定的Windows SDK版本未安装,或项目间SDK版本不匹配,解决方法如下:
- 安装对应SDK版本:打开Visual Studio Installer,点击「修改」,在「单个组件」中找到并勾选
Windows SDK 10.0.26100.0(需包含Debug工具组件),完成安装。 - 统一项目SDK版本:若不想安装该版本,右键WAP项目(
UWPPackaged)→属性→配置属性→常规,将「Windows SDK版本」修改为你已安装的版本(比如常见的10.0.22621.0)。同时检查UWP项目的SDK版本,确保和WAP项目一致。
正确打包UWP + 完全信任Win32的流程
要同时打包C++/WinRT UWP和完全信任Win32程序,需通过WAP项目整合,步骤如下:
- 准备项目:确保解决方案中已有C++/WinRT UWP项目和完全信任Win32项目(Win32项目需设置为无沙箱限制的完全信任模式)。
- 添加WAP项目:右键解决方案→添加→新建项目,搜索并选择「Windows Application Packaging Project」,命名后创建。
- 添加项目引用:
- 在WAP项目的
Applications节点上右键→添加引用,选择你的UWP项目添加。 - 在WAP项目的
Extensions节点上右键→添加引用,选择你的Win32项目添加(Win32程序会作为桌面扩展打包进MSIX)。
- 在WAP项目的
- 统一配置:确保WAP、UWP、Win32三个项目的平台(x64/x86/ARM)和配置(Debug/Release)完全一致,避免依赖不兼容。
- 处理Win32依赖:如果Win32项目有第三方库或额外资源文件,将这些文件添加到WAP项目中,设置「复制到输出目录」为「始终复制」,并在WAP的
Package.appxmanifest中声明部署路径。 - 打包测试:右键WAP项目→生成→打包,生成最终的MSIX包;也可右键WAP项目→部署,直接测试安装运行。
注意事项
- 不要使用UWP项目自带的自打包功能,WAP是整合UWP和桌面程序的官方标准方式。
- 若Win32程序需要访问系统资源,需在WAP的
Package.appxmanifest中声明对应的权限(如文件系统访问权限)。
内容的提问来源于stack exchange,提问作者sz ppeter
相关产品推荐
相关产品推荐

