如何在Windows应用打包项目中嵌入.NET 8.0 Runtime?
解决方案:将.NET 8.0 Runtime嵌入Windows应用打包包
核心配置调整
你之前尝试的WindowsAppSDKSelfContained仅针对Windows App SDK框架,对于.NET Runtime的嵌入,需重点调整WPF项目的自包含设置,配合打包项目配置:
修改WPF项目的.csproj
启用自包含部署,添加以下属性:<PropertyGroup> <SelfContained>true</SelfContained> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 根据目标架构选择:win-x86、win-arm64等 --> </PropertyGroup>SelfContained是控制.NET Runtime是否被包含的核心开关,必须在WPF项目中设置。调整Windows应用打包项目的.wapproj
确保打包项目正确引用自包含的WPF输出,添加配置:<PropertyGroup> <IncludeFrameworkInPackage>true</IncludeFrameworkInPackage> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 必须与WPF项目的RuntimeIdentifier完全一致 --> </PropertyGroup>该配置会让打包工具将WPF项目生成的自包含Runtime文件纳入最终的Appx/MSIX包。
移除无效自定义Target
你之前添加的_RemoveFrameworkReferences Target会移除Windows App Runtime依赖,干扰正常打包流程,直接删除该代码段即可。
验证打包结果
重新生成解决方案并打包后:
- 检查输出的Appx/MSIX包内部,应包含
Runtime文件夹,其中有.NET 8.0运行时文件。 - 在未安装.NET 8 Runtime的测试机器上安装包,确认应用可正常启动。
常见注意事项
- WPF项目与打包项目的
RuntimeIdentifier必须完全匹配,否则Runtime无法正确嵌入。 - WPF项目无需设置
WindowsAppSDKSelfContained,该属性适用于WinUI 3等Windows App SDK原生应用。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

