点击上方蓝字关注“汪宇杰博客”
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/e8fc7a13dbc83c5633990450d1ca922d.png)
导语
我最近买了个树莓派4,4GB内存高富帅配置,并安装了官方操作系统Raspbian。今天我成功运行了一个ASP.NET Core 3.0 应用程序。我们来看看怎么弄的吧~
ARM32 还是 ARM64?
需要说明的是,目前无法在树莓派 4 上运行 ARM64 版本的 .NET Core 运行时或 SDK。虽然树莓派4的CPU支持64位,但其官方操作系统Raspbian不是64位的。其他第三方操作系统也尚未更新以支持树莓派4。所以,如果你想在树莓派4上跑 .NET Core 3.0 ,唯一的选择是 ARM32。
准备
必需:互联网连接,用于下载 .NET Core 3.0 运行时及SDK
可选:VS / VSCode 用于开发样例工程
更新 Raspbian 系统
sudo apt-get update
sudo apt-get upgrade
建议为你的树莓派准备个显示器或 VNC 连接,以便可以在最后一步测试你的 ASP.NET Core 网站,而无需纠结端口和网络设置。
下载 .NET Core 3.0 SDK 及运行时
在你的电脑上打开 https://dotnet.microsoft.com/download/dotnet-core/3.0 找到 Linux 底下的 ARM32 版本的 SDK 及 Runtime,点开,页面上会显示一个 Direct Link。这两个链接就是我们在 Raspbian 上要用来下载最新版 SDK 及运行时的链接。
目前,这两个链接是:
.NET Core 3.0 SDK (Linux/ARM32)
https://download.visualstudio.microsoft.com/download/pr/8ddb8193-f88c-4c4b-82a3-39fcced27e91/b8e0b9bf4cf77dff09ff86cc1a73960b/dotnet-sdk-3.0.100-linux-arm.tar.gz
ASP.NET Core 3.0 Runtime (Linux/ARM32)
https://download.visualstudio.microsoft.com/download/pr/e9d4b012-a877-443c-8344-72ef910c86dd/b5e729b532d7b3b5488c97764bd0fb8e/aspnetcore-runtime-3.0.0-linux-arm.tar.gz
到树莓派上使用 wget 下载这两个文件
wget https://download.visualstudio.microsoft.com/download/pr/8ddb8193-f88c-4c4b-82a3-39fcced27e91/b8e0b9bf4cf77dff09ff86cc1a73960b/dotnet-sdk-3.0.100-linux-arm.tar.gz
wget https://download.visualstudio.microsoft.com/download/pr/e9d4b012-a877-443c-8344-72ef910c86dd/b5e729b532d7b3b5488c97764bd0fb8e/aspnetcore-runtime-3.0.0-linux-arm.tar.gz
安装 .NET Core 3.0 SDK 及运行时
创建一个新目录,如 dotnet-arm32,将刚才下载好的文件解压进去。
mkdir dotnet-arm32
tar zxf aspnetcore-runtime-3.0.0-linux-arm.tar.gz -C $HOME/dotnet
tar zxf dotnet-sdk-3.0.100-linux-arm.tar.gz -C $HOME/dotnet
目前为止,你只能在 dotnet-arm32 里执行.NET命令。要让 dotnet 命令在任何位置都能跑,需要创建一个环境变量连接指向 dotnet-arm32 文件夹。
export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32
现在你可以运行 dotnet --info 试一下:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/c632bbc93efa1550367a03b200db17fa.png)
在Raspbian里创建.NET Core程序
现在,我们已经有了 SDK,我们不必使用另一台计算机来开发和发布应用程序。我们可以直接在树莓派上搞。
mkdir hello-netcore3
cd hello-netcore3/
dotnet new console
工程创建完成,NuGet 还原完成后,即可用 dotnet run 命令执行程序。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/e392d2f166b9720ff18104fd940ce711.png)
甚至你也可以凑合着用 nano 作为编辑器
sudo nano Program.cs
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/fc817e143d4b9169b8d278645d3474e3.png)
部署和运行 ASP.NET Core 网站
在更真实的场景中。如果没有 Raspbain 上的 IDE,您就无法开发复杂的 .NET Core 应用程序。我们通常先在电脑上开发和测试我们的应用程序,然后发布到树莓派来运行。
要运行 ASP.NET Core 应用程序,首先需要发布它。例如,从 Visual Studio 2019 中,我有一个空 ASP.NET Core 应用程序,改了点Startup.cs 输出更多信息。
await context.Response.WriteAsync($"Empower every person and every organization on the planet to achieve more{Environment.NewLine}" + $".NET Core {Environment.Version}{Environment.NewLine}" + $"Environment.OSVersion: {Environment.OSVersion}{Environment.NewLine}" + $"Environment.Is64BitOperatingSystem: {Environment.Is64BitOperatingSystem}{Environment.NewLine}" + $"Environment.Is64BitProcess: {Environment.Is64BitProcess}", Encoding.UTF8);
使用 FDD + Portable 发布。因为我们树莓派上已经安装了原生运行时,因此根本无需使用 linux-arm 这个RID来发布。Portable即可运行。
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/3c45815db337a8ee514d28c095bbba84.png)
把发布后的目录拷到树莓派上
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/7f50bf9f5d8d2b4ae53a527dcc2c99bb.png)
现在,即可用 dotnet dll名称.dll 来跑你的 ASP.NET Core 网站
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/1b1f463bba3d8a29be82c292d4f305a0.png)
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/05bf9c67e20edc1b9c23bb8e5dca14d2.png)
想要 Docker?
Docker Hub 上可以下载到微软官方的 .NET Core 3.0 ARM32 版运行时及SDK,如果你像我一样在树莓派上安装了docker,可以直接 docker run 欢乐多:
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/1d33f94ec3063cf2713e1f9a96b7f74c.png)
![640?wx_fmt=gif](https://i-blog.csdnimg.cn/blog_migrate/55ac7cbf8a4582cc73a2b35964f94a91.gif)
参考文档:https://www.hanselman.com/blog/InstallingTheNETCore2xSDKOnARaspberryPiAndBlinkingAnLEDWithSystemDeviceGpio.aspx