使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序

前言 前段时间入手了一台树莓派4B,一直闲置未使用,最近工作需要,要在上面跑下.NET Core程序,由于树莓派4B使用的是ARM架构,并且支持64位操作系统,为了充分发挥树莓派性能,我的这台树莓派安装了官方最新的64位树莓派系统,在使用vs2019发布ASP.NET Core程序时,发现目标运行时中没有linux-arm64选项
使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
文章图片

之前看到网上说64位系统可以跑32位程序,于是直接将目标运行时`linux-arm`选中进行发布,将发布后程序部署到树莓派运行
使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
文章图片

可以看出,程序报应用程序格式错误,说明这种方式在树莓派不行,必须要生成64的应用程序才能运行。
生成ARM64位程序 去官网查看(https://docs.microsoft.com/zh-cn/dotnet/core/rid-catalog#linux-rids),发现是支持linux-arm64运行时的,可以通过dotnet命令进行发布,在项目根目录(.csproj所在目录)下启动命令行工具

dotnet publish -c Release -r linux-arm64

对于用惯了Visual Studio的人来说,每次发布时都要去敲命令比较麻烦,有没有办法实现在vs2019发布linux-arm64程序呢,我又去官网找了下,在这里(https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs?tabs=vs156#self-contained-deployment-without-third-party-dependencies)找到了解决办法。
打开项目文件,我这里为DotNetCorePubLinuxArm64.csproj,添加linux-arm64
linux-arm64 netcoreapp3.1

【使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序】使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
文章图片

在vs中重新发布应用程序,可以看到此时发布窗口中目标运行时选项框已经有了linux-arm64选项,选中后发布程序,并在树莓派中运行
使用Visual|使用Visual Studio 2019将ASP.NET Core发布为linux-arm64程序
文章图片

可以看到此时程序已经正常运行,问题解决。
如果你手上刚好也有一台树莓派,想要亲自动手试试,代码地址:
gitee:https://gitee.com/gyhgis/DotNetCorePubLinuxArm64
github:https://github.com/gyhgis/DotNetCorePubLinuxArm64

    推荐阅读