在Raspberry Pi 3B上运行C# Discord Bot时遇运行故障求助
解决Raspberry Pi 3B上运行Discord.Net机器人的问题
首先得给你理清一个关键误区:Discord.Net从2.x版本开始就优先适配.NET Core/.NET 5+,Mono对这类现代.NET库的兼容性已经很差,尤其是在树莓派的ARM架构上,这大概率是你运行.exe一直失败的核心原因。下面是一步步落地的解决方案:
1. 先清理Mono(可选但推荐)
既然要切换到官方支持的运行时,先把Mono卸载避免冲突:
sudo apt remove --purge mono-runtime mono-complete sudo apt autoremove
2. 在Raspbian上安装.NET运行时
树莓派3B属于ARMv7架构,推荐安装稳定的LTS版本(比如.NET 6):
- 先添加微软官方软件源:
wget https://packages.microsoft.com/config/debian/bullseye/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
- 安装.NET 6运行时:
sudo apt update && sudo apt install -y dotnet-runtime-6.0
验证安装成功:
dotnet --version
3. 重新构建适配树莓派的机器人项目
回到你的开发笔记本,打开Discord.Net项目:
- 先确认项目的目标框架是
.NET 6(或更高LTS版本),可以在项目文件(.csproj)里查看/修改:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup>
- 针对树莓派的ARMv7架构发布项目:
dotnet publish -c Release -r linux-arm --self-contained false
参数说明:
-c Release:发布性能更优的Release版本-r linux-arm:指定目标运行环境为Linux ARMv7(完美适配树莓派3B)--self-contained false:不打包.NET运行时,因为我们已经在树莓派上单独安装了,能节省大量空间
4. 部署到树莓派并运行
- 把发布目录(
bin/Release/net6.0/linux-arm/publish)里的所有文件,上传或克隆到树莓派的某个目录(比如~/discord-bot) - 给可执行文件赋予权限:
chmod +x ./YourBotName
- 启动机器人:
./YourBotName
额外优化:让机器人后台持续运行
如果不想一直开着SSH窗口,可以用systemd创建后台服务:
- 创建服务配置文件:
sudo nano /etc/systemd/system/discord-bot.service
- 填入以下内容(记得替换路径和用户名):
[Unit] Description=Discord Bot Service After=network.target [Service] User=pi WorkingDirectory=/home/pi/discord-bot ExecStart=/home/pi/discord-bot/YourBotName Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
- 启用并启动服务:
sudo systemctl enable discord-bot sudo systemctl start discord-bot
- 查看运行日志:
sudo journalctl -u discord-bot -f
内容的提问来源于stack exchange,提问作者Noahpls
相关产品推荐
相关产品推荐

