Raspberry Pi に .NET アプリを展開する

Raspberry Pi への .NET アプリの展開は、他のプラットフォームと同じです。 アプリは、自己完結型またはフレームワーク依存の配置モードとして実行できます。 それぞれの戦略に利点があります。 詳細については、「.NET アプリケーションの発行の概要」を参照してください。

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

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

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

  1. Raspberry Pi で SSH が有効になっていることを確認します。 必要に応じて、Raspberry Pi のドキュメントの「Setting up an SSH Server (SSH サーバーの設定)」を参照します

  2. dotnet-install スクリプトを使用して、Raspberry Pi に .NET をインストールします。 Raspberry Pi (ローカルまたは 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 クライアントを使用して、開発用コンピューターの発行場所から Raspberry Pi 上の新しいフォルダーにファイルをコピーします。

    たとえば、scp コマンドを使用して開発用コンピューターから Raspberry Pi にファイルをコピーするには、コマンド プロンプトを開き、次のコマンドを実行します。

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

    各値の説明:

    • -r オプションは、ファイルを再帰的にコピーするように scp に指示します。
    • /publish-location/ は、前のステップで発行したフォルダーです。
    • pi@raspberypi は、<username>@<hostname> 形式のユーザー名とホスト名です。
    • /home/pi/deployment-location/ は、Raspberry Pi 上の新しいフォルダーです。

    ヒント

    最新バージョンの Windows には、インストール済みの scp が含まれている OpenSSH があります。

  5. Raspberry Pi (ローカルまたは SSH) の Bash プロンプトから、アプリを実行します。 これを行うには、展開フォルダーを現在のディレクトリに設定し、次のコマンドを実行します (HelloWorld.dll はアプリのエントリ ポイントです)。

    dotnet HelloWorld.dll
    

自己完結型アプリの展開

自己完結型デプロイの図を示すアニメーション GIF。SDK は、.NET ランタイムにバンドルされたアセンブリを作成します。そのため、ターゲット デバイスに必要な依存関係はありません。

自己完結型アプリとしてアプリを展開するには、次の手順を実行します。

  1. Raspberry Pi で SSH が有効になっていることを確認します。 必要に応じて、Raspberry Pi のドキュメントの「Setting up an SSH Server (SSH サーバーの設定)」を参照します

  2. 開発環境に応じて、次のようにして、開発用コンピューターにアプリを発行します。

    • Visual Studio を使用している場合は、アプリをローカル フォルダーに配置します。 発行する前に、発行プロファイルの概要で [編集] を選択し、 [設定] タブを選択します。 [配置モード][自己完結] に、 [ターゲット ランタイム][linux-arm] に設定されていることを確認します。

    • .NET CLI を使う場合は、--runtime linux-arm および --self-contained 引数を指定して dotnet publish コマンドを使用します。

      dotnet publish --runtime linux-arm --self-contained
      

    重要

    64 ビット バージョンの Raspberry Pi OS を使用している場合は、linux-arm64 ランタイムをターゲットにする必要があります。

  3. scpなどの SFTP クライアントを使用して、開発用コンピューターの発行場所から Raspberry Pi 上の新しいフォルダーにファイルをコピーします。

    たとえば、scp コマンドを使用して開発用コンピューターから Raspberry Pi にファイルをコピーするには、コマンド プロンプトを開き、次のコマンドを実行します。

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

    各値の説明:

    • -r オプションは、ファイルを再帰的にコピーするように scp に指示します。
    • /publish-location/ は、前のステップで発行したフォルダーです。
    • pi@raspberypi は、<username>@<hostname> 形式のユーザー名とホスト名です。
    • /home/pi/deployment-location/ は、Raspberry Pi 上の新しいフォルダーです。

    ヒント

    最新バージョンの Windows には、インストール済みの scp が含まれている OpenSSH があります。

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

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

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

      ./HelloWorld