使用Visual Studio 2019將ASP.NET Core發布為linux-arm64程式

前言

前段時間入手了一台樹莓派4B,一直閑置未使用,最近工作需要,要在上面跑下.NET Core程式,由於樹莓派4B使用的是ARM架構,並且支援64位作業系統,為了充分發揮樹莓派性能,我的這台樹莓派安裝了官方最新的64位樹莓派系統,在使用vs2019發布ASP.NET Core程式時,發現目標運行時中沒有linux-arm64選項

之前看到網上說64位系統可以跑32位程式,於是直接將目標運行時`linux-arm`選中進行發布,將發布後程式部署到樹莓派運行

 可以看出,程式報應用程式格式錯誤,說明這種方式在樹莓派不行,必須要生成64的應用程式才能運行。

生成ARM64位程式

 去官網查看(//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程式呢,我又去官網找了下,在這裡(//docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-vs?tabs=vs156#self-contained-deployment-without-third-party-dependencies)找到了解決辦法。

打開項目文件,我這裡為DotNetCorePubLinuxArm64.csproj,添加<RuntimeIdentifiers>linux-arm64</RuntimeIdentifiers>

<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <!-- 這裡添加運行時環境 -->
        <RuntimeIdentifiers>linux-arm64</RuntimeIdentifiers>
        <TargetFramework>netcoreapp3.1</TargetFramework>
    </PropertyGroup>
</Project>

 在vs中重新發布應用程式,可以看到此時發布窗口中目標運行時選項框已經有了linux-arm64選項,選中後發布程式,並在樹莓派中運行

可以看到此時程式已經正常運行,問題解決。

如果你手上剛好也有一台樹莓派,想要親自動手試試,程式碼地址:

gitee://gitee.com/gyhgis/DotNetCorePubLinuxArm64

github://github.com/gyhgis/DotNetCorePubLinuxArm64