如何让WPF .NET Core 3.1的Debug版exe无需依赖独立运行
结论
需求可以实现,核心是调整发布配置为框架依赖的单文件发布模式,你之前遇到的体积过大、单文件无法运行的问题均由发布配置选择错误导致。
核心原理说明
你之前开发的WinForm基于.NET Framework,默认生成的exe本身包含程序代码,且目标Windows系统一般预装有对应版本的.NET Framework,所以可以直接单独运行。而WPF .NET Core 3.1默认的编译逻辑是:bin/Debug下的exe仅作为运行时引导程序,不包含业务代码和运行配置,代码全部存放在app.dll中,所以不能单独运行。
操作步骤
- 右键你的WPF项目,选择【发布】,发布目标选择【文件夹】,完成初始创建流程
- 进入发布配置页,点击【显示所有设置】,按以下规则调整参数:
- 部署模式:选择 框架依赖(不要选独立部署,独立部署会将完整.NET Core 3.1运行时打包进文件,是你之前生成180MB文件的核心原因)
- 目标运行时:选择对应架构的Windows专属运行时(
win-x86或win-x64,根据你的目标设备架构选择,不要选「可移植」) - 勾选 生成单个文件
- 不要勾选「裁剪未使用的代码」选项,裁剪会误删WPF的XAML组件依赖,是你之前单文件无法正常运行的常见原因
- 保存配置后点击发布,生成的单exe文件体积将和Debug目录下的exe大小接近,通常在200KB以内,无需附带其他任何文件即可运行。
前置要求
目标设备(Windows 10、Windows Server 2012 R2)需要预先安装 .NET Core 3.1 桌面运行时,该运行时安装包体积约50MB,属于一次性部署依赖。如果你要求用户完全不需要预装任何依赖,只能选择独立部署模式,文件体积必然会达到100MB以上,不存在两全方案。
额外注意:Windows Server 2012 R2需要提前安装VC++ 2015-2019 可再发行包,否则.NET Core 3.1运行时无法正常启动。
内容的提问来源于stack exchange,提问作者Ranald Fong
相关产品推荐
相关产品推荐

