正如标题所说,我正在制作一个用C#编写的discord bot,我最近得到了一个树莓派,想知道我是否可以在其上安装Linux,然后在它上面运行bot,即使它是用c#编写的?
答案通常是肯定的(请查看下面的Mono发布链接)。标准功能可能不支持某些功能。我用过它,我知道它有效
http://www.mono-project.com/docs/getting-started/mono-basics/
我意识到我迟到了一年多,但由于这是Google的第一个结果,我认为在这里写一个快速指南会很有帮助。
这将在运行Raspbian的Raspberry Pi上运行.NET Core Discord Bot应用程序。
我还想给我的朋友ComputerNerd100#2917(Discord)给予很多信任,教我如何做到这一点。
此外,这是假设您没有可用于您的Pi的监视器(像我一样)。
首先,发布您的.NET Core应用程序以在ARM上运行。使用WIN+X
然后C
打开命令提示符。类型
cd <Path to project>
这应该是包含.sln Visual Studio文件的文件夹的路径。不要在命令中包含.sln文件。
接下来,运行dotnet publish -r linux-arm
,这可能需要一段时间但最终应该输出它已编译到的目录。请注意此目录,因为您稍后会需要它。
现在,您需要在Windows计算机上安装PuTTY。这是我们用来暂时连接到Raspberry Pi的工具。下载它here。
要使PuTTY正常工作,请将SD卡从Raspberry Pi中取出并放入计算机中。在BOOT驱动器中,创建一个名为“ssh”的文件,不带扩展名。它必须位于驱动器的根目录中。
现在将SD卡放回Pi中并打开它。确保它已连接到互联网。
安装PuTTY后,运行该程序,将出现“主机名(或IP地址)”框。通过查看路由器的设置页面查找Raspberry Pi的IP,或者,如果您有监视器,则通过在Pi的命令行界面上运行ifconfig
来查找。在框中输入此IP地址,并确保选择连接类型“SSH”。单击“打开”或按Enter键。
应出现一个控制台窗口,提示您登录。使用您在Pi上设置的凭据。如果您没有更改这些,则默认用户名为pi
,密码为raspberry
。
接下来,按顺序在PuTTY中运行这些命令以安装.net:
sudo apt-get -y update
sudo apt-get -y install libunwind8 gettext
wget https://dotnetcli.blob.core.windows.net/dotnet/Sdk/2.1.300-rc1-008673/dotnet-sdk-2.1.300-rc1-008673-linux-arm.tar.gz
wget https://dotnetcli.blob.core.windows.net/dotnet/aspnetcore/Runtime/2.1.0-rc1-final/aspnetcore-runtime-2.1.0-rc1-final-linux-arm.tar.gz
sudo mkdir /opt/dotnet
sudo tar -xvf dotnet-sdk-2.1.300-rc1-008673-linux-arm.tar.gz -C /opt/dotnet/
sudo tar -xvf aspnetcore-runtime-2.1.0-rc1-final-linux-arm.tar.gz -C /opt/dotnet/
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
为确保这些都奏效,请运行dotnet --info
。您应该获得有关.NET Core安装的大量信息。
现在,您必须下载一个工具,将文件从计算机上的目录移动到Pi。下载pscp.exe here。记下您已将其下载到的位置。
再次打开命令提示符,并在命令中键入cd <Location of pscp.exe>
,不包括pscp.exe本身。
现在,在命令提示符下运行此命令将已编译的文件移动到Pi。
PSCP -r "<Path to linux-arm folder>" pi@<Pi's IP Address>:/home/pi/
确保"
s在那里,否则如果文件路径中有空格,程序将会混淆。
现在,在PuTTY中,导航到我们要运行的文件所在的位置。这将是一个与您的解决方案(.sln)同名的文件,应位于linux-arm/publish/
中。在PuTTY中使用cd <path to file>
。 (不要在命令中包含文件本身)。如果您想查看当前所在目录中的所有文件和文件夹,请使用ls -la
要准备要运行的程序,请在PuTTY:chmod 777 ./"<File Name>"
中运行它
最后,程序可以运行。使用./"<File Name>"
来运行它。这将仅在PuTTY窗口打开时运行程序,但现在测试它并且对所有努力工作的满意度都很满意。
要在PuTTY窗口关闭时继续运行程序,您必须安装更多东西。 (使用CTRL+C
关闭当前正在运行的程序)在PuTTY中运行sudo apt-get install screen
,然后运行以下命令启动机器人:
screen -dmS discordbot "/home/pi/linux-arm/publish/<File Name>"
机器人现在应该在没有打开PuTTY窗口的情况下运行。
当插入Pi时,让机器人自动运行会很好,我和我的朋友正在研究这个问题。当我们弄明白时,我会更新我的答案。
希望这可以帮助!如果您在遵循这些说明时遇到任何问题,请通过Discord(230Daniel#1920或ComputerNerd100#2917)与我或我的朋友联系或对此答案发表评论。