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

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

部署依赖于框架的应用

显示依赖于框架的部署关系图的动画 GIF。SDK 将创建需要目标设备上的 .NET 运行时的程序集。

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

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

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

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

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

      注释

      此命令安装最新版本。 如果需要特定版本,请将--channel STS参数替换为特定的<VERSION>生成版本,例如8.0.404--version <VERSION>。 有关版本列表,请参阅 适用于 Visual Studio 的 .NET SDK。 请参阅“Visual Studio 2022 SDK”列以确定完整构建号。

    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@raspberrypi 是采用格式 <username>@<hostname>的用户和主机名。
    • /home/pi/deployment-___location/ 是 SBC 上的新文件夹。

    小提示

    最新版本的 Windows 预装了包括 scp 的 OpenSSH。

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

    dotnet HelloWorld.dll
    

部署独立应用

显示独立部署关系图的动画 GIF。SDK 创建与 .NET 运行时捆绑的程序集。因此,目标设备上不需要依赖项。

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

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

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

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

    • 如果使用 .NET CLI,请使用 dotnet publish 命令并包含 --runtime linux-arm64--self-contained 参数:

      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@raspberrypi 是采用格式 <username>@<hostname>的用户和主机名。
    • /home/pi/deployment-___location/ 是 SBC 上的新文件夹。

    小提示

    Windows 的最新版本自带预安装的 OpenSSH,包括 scp

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

    1. 授予可执行文件执行权限(其中 HelloWorld 是可执行文件名)。

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

      ./HelloWorld