前言

最近想做个私有NAS,所以入手了一块树莓派 3b+,刷了openmediavault系统。系统是基于linux的,然后寻思着看树莓派能不能运行下.netcore程序。经过一阵搜索,发现其实步骤还是挺简单的。

总结下就是:

  1. 在你的树莓派上安装linux系统。现在支持arm32的linux系统我知道的有Debian和Ubuntu。openmediavalut和树莓派官方的Raspbian都是基于Debian的。
  2. 在树莓派上安装.netcore2.1的Runtime。
  3. 把你的控制台程序上传到树莓派上

实现

1. 在树莓派上安装linux系统

因为之前已经安装过openmediavault了,所以跳过。如果想安装的话,可以点击下载
这里写图片描述
安装的话,就按照页面下方的文字说明进行安装即可。亦可自行百度。

2.安装.netcore runtime

这里推荐使用脚本安装, 可以自动安装对应架构对应系统的版本。按照微软团队给出的方法:

Scripting Installs with the .NET Core installer script
The dotnet-install scripts are used to perform a non-admin install of the CLI toolchain and the shared runtime. You can download the script from https://dot.net/v1/dotnet-install.sh.

首先, 输入以下命令,把sh文件下载下来:
wget https://dot.net/v1/dotnet-install.sh
如果你只想安装runtime并不想安装sdk的话,直接执行以下命令,默认是安装LTS版本:
./dotnet-install.sh --runtime dotnet
如果runtime和sdk要一并安装的话,输入以下命令(指定版本安装):
./dotnet-install.sh --channel 2.1
在这里我们输入以下命令安装最新版:(具体可用的参数有哪些,参考文末引用链接
./dotnet-install.sh --channel Current
默认是安装到了当前目录的.dotnet文件夹内,所以要把当前目录添加到环境变量, 输入以下命令开始编辑profile
sudo nano /etc/profile
在空白行位置,插入类似以下代码:export PATH="/hom/jim/.dotnet:$PATH"
然后输入
source /etc/profile
使新加入的环境变量生效。(可以直接输入env查看系统环境变量)

此时输入dotnet --info应显示以下类似信息:

ubuntu@ubuntu:~/consoleapp$ dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.100
 Commit:    51868761f2

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  18.04
 OS Platform: Linux
 RID:         ubuntu.18.04-arm64
 Base Path:   /home/ubuntu/.dotnet/sdk/2.2.100/

Host (useful for support):
  Version: 2.2.0
  Commit:  1249f08fed

.NET Core SDKs installed:
  2.2.100 [/home/ubuntu/.dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.1.6 [/home/ubuntu/.dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [/home/ubuntu/.dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

注意:这里因为我是arm64版本的linux,微软的blob里并没有对应的aspnetcore的runtime,所以没法直接跑asp.net core程序

3.编写.NET Core控制台程序

这里我用VS2017写了一个core 2.1的控制台应用ConsoleApp1,很简单没什么功能,就是输出一句话。

class Program
{
   static void Main(string[] args)
   {
        Console.WriteLine("Hello world");
        Console.Read();
   }
}

4.发布、上传并执行

将项目下的bin/Debug目录下的所有内容通过xshell的xftp上传到树莓派上。

打开XShell,连接上树莓派(需要先把树莓派的ssh打开):
这里写图片描述
然后输入以下命令在当前目录新建一个publish文件夹:

打开XShell的ftp工具:
这里写图片描述
把Debug目录下是文件随便传到树莓派目录上,如ConsoleApp1。
等待上传完成后,在xshell里cd到publish目录,然后执行

chmod 755 ConsoleApp1

赋予ConsoleApp1文件相应的权限。
接下来就是看结果了:

ubuntu@ubuntu:~/consoleapp$ dotnet ConsoleApp1.dll
Hello World!
ubuntu@ubuntu:~/consoleapp$ 

5. 下一步工作

试着调用下树莓派的GPIO。
参考:【.NET Core】如何点亮树莓派Raspberry Pi 3b+上的一盏小灯


参考

1. Prerequisites for .NET Core on Linux
2. dotnet-install 脚本引用

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐