「Raspbianに.NET Coreを入れる」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
 +
== インストールする ==
 
まず[[マイクロソフト]]の[[ウェブサイト]]から.NET Core SDKの「Linux ARM32版」を[[ダウンロード]]してくる。[[Raspberry Pi 3]]以降の[[SoC]]は64ビットだが、[[Raspbian]]は古いモデルもサポートするため32ビットとなっているためだ。
 
まず[[マイクロソフト]]の[[ウェブサイト]]から.NET Core SDKの「Linux ARM32版」を[[ダウンロード]]してくる。[[Raspberry Pi 3]]以降の[[SoC]]は64ビットだが、[[Raspbian]]は古いモデルもサポートするため32ビットとなっているためだ。
 
[[ファイル:Raspbian-netcore-download.png|なし|サムネイル|927x927ピクセル]]
 
[[ファイル:Raspbian-netcore-download.png|なし|サムネイル|927x927ピクセル]]
  
  
.NET Core SDKのtar.gzファイルの[[ダウンロード]]が終わったらアーカイブを展開する。なお、このtgzファイルはディレクトリなしで格納されているので、あらかじめ展開先を作っておかないとグチャグチャになる。
+
.NET Core SDKのtar.gzファイルの[[ダウンロード]]が終わったらアーカイブを展開する。なお、このtgzファイルはディレクトリなしで格納されているので、あらかじめ展開先を作っておかないとグチャグチャになる。ちなみに[[macOS]]向けのpkgファイルだと「/usr/local/share/dotnet/」に格納される。「dotnet」というディレクトリ名が定番のようだ。
 
<source lang="bash">
 
<source lang="bash">
 
$ mkdir $HOME/dotnet
 
$ mkdir $HOME/dotnet
37行目: 38行目:
 
</source>
 
</source>
  
 +
== コンソールプロジェクトを動かしてみる ==
 
プロジェクトを新規作成してみる。
 
プロジェクトを新規作成してみる。
 
<source lang="bash">
 
<source lang="bash">
49行目: 51行目:
 
</source>
 
</source>
  
あまりにも遅いので計測してみる。[[ハロワ]]に30秒とかアホか。 ランタイムの初期化が重たいようなので、起動しっぱなし常駐タイプの[[ASP.NET Core Web API]]あたりに特化した使い方のほうが良さそうである。
+
あまりにも遅いので計測してみる。
 
<source lang="bash">
 
<source lang="bash">
 
$ time dotnet run  
 
$ time dotnet run  
58行目: 60行目:
 
sys 0m2.801s
 
sys 0m2.801s
 
</source>
 
</source>
 +
 +
[[ハロワ]]に30秒とかアホか。 ランタイムの初期化が重たいようなので、起動しっぱなし常駐タイプの[[ASP.NET Core Web API]]あたりに特化した使い方のほうが良さそうである。
 +
 +
== ASP.NET Core Web APIを動かしてみる ==
 +
ということでASP.NET Core Web APIのプロジェクトを作ってみる。
 +
<source lang="bash">
 +
$ dotnet new webapi -o webapi1
 +
$ cd webapi1
 +
</source>
 +
 +
「Properties/launchSettings.json」を変更してlocalhost以外のIPからも接続できるようにする。
 +
「localhost」となっている部分を「0.0.0.0」に書き換えるとよい。
 +
* 変更前: "applicationUrl": "https://localhost:5001;http://localhost:5000",
 +
* 変更後: "applicationUrl": "https://0.0.0.0:5001;http://0.0.0.0:5000",
 +
 +
「dotnet run」ではなく「dotnet watch run」を使うと、プロジェクト内のファイルの変更を検知して自動的にリビルド&再起動がかかるようになる。
 +
[[PHP]]などと同様の感覚で[[ソースコード]]をガシガシ書き換えることに集中できる。
 +
<source lang="bash">
 +
$ dotnet watch run
 +
</source>
 +
 +
ただし[[Raspberry Pi]]だとリビルド&再起動がアホみたいに遅い。「つながらない」「設定どこか間違えたか」と悩むほど遅い。
 +
気長に待つと解決する。
  
 
== 関連項目 ==
 
== 関連項目 ==

2020年5月13日 (水) 03:32時点における最新版

インストールする[編集 | ソースを編集]

まずマイクロソフトウェブサイトから.NET Core SDKの「Linux ARM32版」をダウンロードしてくる。Raspberry Pi 3以降のSoCは64ビットだが、Raspbianは古いモデルもサポートするため32ビットとなっているためだ。

Raspbian-netcore-download.png


.NET Core SDKのtar.gzファイルのダウンロードが終わったらアーカイブを展開する。なお、このtgzファイルはディレクトリなしで格納されているので、あらかじめ展開先を作っておかないとグチャグチャになる。ちなみにmacOS向けのpkgファイルだと「/usr/local/share/dotnet/」に格納される。「dotnet」というディレクトリ名が定番のようだ。

$ mkdir $HOME/dotnet
$ tar zxvf dotnet-sdk-3.1.202-linux-arm.tar.gz -C $HOME/dotnet

.bashrcに環境変数を追加する。

$ echo 'export DOTNET_ROOT=$HOME/dotnet' >> ~/.bashrc
$ echo 'export PATH=$PATH:$HOME/dotnet' >> ~/.bashrc

.bashrcを再読込する。

$ source .bashrc

動かしてみる。

$ dotnet

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET Core information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

コンソールプロジェクトを動かしてみる[編集 | ソースを編集]

プロジェクトを新規作成してみる。

$ dotnet new console -o helloworld1
$ cd helloworld1

プロジェクトを実行するとハロワが表示される。めっちゃ遅くてびびる。

$ dotnet run 
Hello World!

あまりにも遅いので計測してみる。

$ time dotnet run 
Hello World!
 
real	0m30.772s
user	0m38.978s
sys	0m2.801s

ハロワに30秒とかアホか。 ランタイムの初期化が重たいようなので、起動しっぱなし常駐タイプのASP.NET Core Web APIあたりに特化した使い方のほうが良さそうである。

ASP.NET Core Web APIを動かしてみる[編集 | ソースを編集]

ということでASP.NET Core Web APIのプロジェクトを作ってみる。

$ dotnet new webapi -o webapi1
$ cd webapi1

「Properties/launchSettings.json」を変更してlocalhost以外のIPからも接続できるようにする。 「localhost」となっている部分を「0.0.0.0」に書き換えるとよい。

「dotnet run」ではなく「dotnet watch run」を使うと、プロジェクト内のファイルの変更を検知して自動的にリビルド&再起動がかかるようになる。 PHPなどと同様の感覚でソースコードをガシガシ書き換えることに集中できる。

$ dotnet watch run

ただしRaspberry Piだとリビルド&再起動がアホみたいに遅い。「つながらない」「設定どこか間違えたか」と悩むほど遅い。 気長に待つと解決する。

関連項目[編集 | ソースを編集]