ARM シングルボード コンピューターに .NET アプリを配備する

.NET アプリをシングルボード コンピューターに配備する作業は、他のいかなるプラットフォームの場合と変わりません。 アプリは、自己完結型またはフレームワーク依存の配置モードとして実行できます。 それぞれの戦略に利点があります。 詳細については、「.NET アプリケーションの発行の概要」を参照してください。

フレームワーク依存アプリの展開

フレームワークに依存するデプロイの図を示すアニメーション GIF。SDK によって作成されるアセンブリでは、ターゲット デバイス上に .NET ランタイムが必要です。

アプリをフレームワーク依存アプリとして展開するには、次の手順を実行します。

  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. scp などの SFTP クライアントを使用し、開発用コンピューターの発行場所から 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 には、インストール済みの 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 を使う場合は、--runtime linux-arm64 および --self-contained 引数を指定して dotnet publish コマンドを使用します。

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

    重要

    32 ビット OS を使用している場合、linux-arm ランタイムをターゲットにする必要があります。

  3. scp などの SFTP クライアントを使用し、開発用コンピューターの発行場所から 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 には、インストール済みの scp が含まれている OpenSSH があります。

  4. デバイス (ローカルまたは SSH) の Bash プロンプトから、アプリを実行します。 これを行うには、現在のディレクトリを配置場所に設定し、次の手順を実行します。

    1. 実行可能ファイルの実行アクセス許可を指定します (HelloWorld は実行可能ファイルの名前です)。

      chmod +x HelloWorld
      
    2. 実行可能ファイルを実行します。

      ./HelloWorld