无法在树莓派上运行.NET 5 Windows Form程序,提示框架未找到
问题根因
- 你收到的
Microsoft.WindowsDesktop.App缺失报错,是因为Windows Forms属于微软Windows专属桌面运行时组件,Linux环境下的标准.NET 5运行时默认不包含该框架组件,微软官方并未提供Linux版的WinForms原生运行时。你看到的可运行案例,均是通过Mono的WinForms兼容层实现的,没有用到.NET Core/5+的原生WinForms运行时。 - 用Mono运行报错的原因:你当前的程序是基于.NET 5编译的,Mono默认仅兼容.NET Framework时代的编译输出,二者的CIL镜像格式存在差异,无法直接识别运行。
可行解决方案
方案1:继续使用WinForms(依赖Mono兼容层)
- 将项目的目标框架改为.NET Framework 4.7/4.8版本,不要使用.NET 5/.NET Core系列框架
- 编译时选择Any CPU架构,不要勾选Windows专属平台限定
- 在树莓派上安装完整Mono运行时:
sudo apt install mono-complete - 将编译输出的exe和依赖文件传输到树莓派,执行
mono <<FILENAME>>.exe即可运行
方案2:替换为跨平台UI框架(更稳定,推荐)
WinForms的Mono兼容层存在较多API适配问题,长期使用建议替换为原生支持Linux ARM的跨平台UI框架:
- 可选框架:AvaloniaUI、GTK#、.NET MAUI(需升级到.NET 6及以上版本)
- 发布时目标运行时选择
linux-arm(树莓派3B+默认32位系统)或linux-arm64(64位系统),不要选择Portable模式 - 传输文件到树莓派后直接执行
dotnet <<FILENAME>>.dll即可运行,System.Device.Gpio功能无需额外适配
内容的提问来源于stack exchange,提问作者a3dur4n
相关产品推荐
相关产品推荐

