在 ARM 单板计算机上部署 .NET 应用

将 .NET 应用程序部署到单板计算机的方法与任何其他平台的部署相同。 应用能够以独立或依赖于框架的部署模式运行 。 每种策略各有优势。 有关详细信息,请参阅 .NET 应用程序发布概述

部署依赖于框架的应用

Animated GIF showing a diagram of framework-dependent deployment. The SDK creates the assemblies, which require the .NET runtime on the target device.

若要将应用部署为依赖框架的应用,请完成以下步骤:

  1. 确保已在设备上启用 SSH。 对于 Raspberry Pi,请参阅 Raspberry Pi 文档中的“设置 SSH 服务器”

  2. 使用 dotnet-install 脚本 在设备上安装 .NET。 在设备(本地或 SSH)上的 Bash 提示符下完成以下步骤:

    1. 运行以下命令以安装 .NET:

      curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel STS
      

      注意

      这会安装最新版本。 如果需要特定版本,请将 --channel STS 参数替换为 --version <VERSION>,其中 <VERSION> 是特定内部版本。

    2. 若要简化路径解析,请使用以下命令将 DOTNET_ROOT 环境变量和 dotnet 目录添加到 $PATH

      echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
      echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
      source ~/.bashrc
      
    3. 使用以下命令验证 .NET 安装:

      dotnet --version
      

      验证显示的版本是否与安装的版本相匹配。

  3. 根据开发环境,将应用发布到开发计算机上,如下所示。

    • 如果使用的是 Visual Studio,请将应用部署到本地文件夹。 发布之前,请在“发布配置文件摘要”中选择“编辑”,然后选择“设置”选项卡。确保将“部署模式”设置为“依赖于框架”,并将“目标运行时”设置为“可移植” 。
    • 如果使用的是 .NET CLI,请使用 dotnet publish 命令。 不需要其他参数。
  4. 使用 SFTP 客户端(如 scp,将文件从开发计算机上的发布位置复制到 SBC 上的新文件夹中。

    例如,若要使用 scp 命令将文件从开发计算机复制到 SBC,请打开命令提示符并执行以下命令:

    scp -r /publish-location/* pi@raspberrypi:/home/pi/deployment-location/
    

    其中:

    • -r 选项指示 scp 以递归方式复制文件。
    • /publish-location/ 是在上一步中发布的文件夹。
    • pi@raspberypi 是格式为 <username>@<hostname> 的用户和主机名。
    • /home/pi/deployment-location/ 是 SBC 上的新文件夹。

    提示

    最新版本的 Windows 具有 OpenSSH,其中包括预安装的 scp

  5. 从 Raspberry Pi 上的 Bash 提示符(本地或 SSH)运行应用。 为此,请将部署文件夹设置为当前目录,并执行以下命令(其中 HelloWorld.dll 是应用的入口点):

    dotnet HelloWorld.dll
    

部署独立应用

Animated GIF showing a diagram of self-contained deployment. The SDK creates the assemblies bundled with the .NET runtime. Consequently, there are no dependencies required on the target device.

若要将应用部署为独立应用,请完成以下步骤:

  1. 确保已在设备上启用 SSH。 对于 Raspberry Pi,请参阅 Raspberry Pi 文档中的“设置 SSH 服务器”

  2. 根据开发环境,将应用发布到开发计算机上,如下所示。

    • 如果使用的是 Visual Studio,请将应用部署到本地文件夹。 发布之前,请在“发布配置文件摘要”中选择“编辑”,然后选择“设置”选项卡。确保将“部署模式”设置为“独立”,并将“目标运行时”设置为“linux-arm64”。

    • 如果使用的是 .NET CLI,请将 --runtime linux-arm64--self-contained 参数与 dotnet publish 命令结合使用:

      dotnet publish --runtime linux-arm64 --self-contained
      

    重要

    如果使用 32 位 OS,则需要面向 linux-arm 运行时。

  3. 使用 SFTP 客户端(如 scp,将文件从开发计算机上的发布位置复制到 SBC 上的新文件夹中。

    例如,若要使用 scp 命令将文件从开发计算机复制到 SBC,请打开命令提示符并执行以下命令:

    scp -r /publish-location/* pi@raspberrypi:/home/pi/deployment-location/
    

    其中:

    • -r 选项指示 scp 以递归方式复制文件。
    • /publish-location/ 是在上一步中发布的文件夹。
    • pi@raspberypi 是格式为 <username>@<hostname> 的用户和主机名。
    • /home/pi/deployment-location/ 是 SBC 上的新文件夹。

    提示

    最新版本的 Windows 具有 OpenSSH,其中包括预安装的 scp

  4. 从设备(本地或 SSH)上的 Bash 提示符运行应用。 为此,请将当前目录设置为部署位置,并完成以下步骤:

    1. 为可执行文件提供执行权限(其中 HelloWorld 是可执行文件的名称)。

      chmod +x HelloWorld
      
    2. 运行可执行文件。

      ./HelloWorld