VS2019开发.NET Core 3.1项目发布到linux-x64缺失WinForms运行时包如何解决
错误原因
核心报错根因:你的项目当前引入了仅Windows平台可用的Windows Forms(WinForms)桌面运行时依赖,
Microsoft.WindowsDesktop.App.WindowsForms没有对应linux-x64架构的官方运行时包,因此跨平台发布时直接触发错误。
解决步骤
根据你的项目类型选择对应方案即可:
方案1:非GUI类项目(控制台、WebAPI、后台服务等)
这类项目本不需要WinForms依赖,去掉相关配置即可:
- 右键项目选择「属性」,打开「应用程序」选项卡,确认目标框架没有绑定Windows窗体相关配置
- 打开项目根目录的
.csproj文件,做两处修正:- 确认项目Sdk为
Microsoft.NET.Sdk,不要使用Microsoft.NET.Sdk.WindowsDesktop - 删除配置中
<UseWindowsForms>true</UseWindowsForms>这一行,保存文件
- 确认项目Sdk为
- 重新生成项目后再执行发布操作即可
方案2:需要运行在Linux的GUI桌面项目
.NET Core 3.1版本的WinForms完全不支持Linux系统,必须替换为跨平台UI框架:
- 可选择Avalonia UI,适配全平台,兼容.NET Core 3.1和Visual Studio 2019
- 可选择GTK#,是Linux原生适配的GUI绑定框架
- 若可升级.NET版本,也可升级到.NET 6+后使用MAUI框架开发跨平台GUI
发布校验
修正依赖后重新配置发布参数:目标框架netcoreapp3.1、部署模式自包含、目标运行时linux-x64,重新发布即可生成可在Linux x64环境直接运行的程序包;如果目标Linux环境提前安装了.NET Core 3.1运行时,也可选择框架依赖模式,生成的文件体积更小。
内容的提问来源于stack exchange,提问作者Design REIPL
相关产品推荐
相关产品推荐

