UbuntuとRiderとC# GUIアプリの開発


[2024/10 Rider 非商用利用なら無償になりました。](https://qiita.com/iota_11/items/08dba299854c918bbac9)

Ubuntu上でC# GUIを開発する時いろいろなIDEやフレームワークがあり、それぞれに長所と短所がある

開発環境
Ubuntu 18
Rider
.net5

| 要件  | 理由 |
|:-----------|:------------|
|.net Core Sdkで開発したい|開発者が多い　monoより.net Coreの方が検索でヒットする|
|glade gtk3を利用したい|Gtk3が.net Coreに対応している|
|VisualSutdio風のIDEを使いたい|Windowsで使い慣れている|

### IDEとフレームワークの種類

| IDE  | SDK | エディター | デザイン | デメリット | 費用 |
|:-----------|:------------|:------------|:------------|:------------|:------------|
| MonoDevelop       | Mono    | VisaulStudioに慣れていると使いづらい    | Gtk2 MonoDesiner  |.net coreが利用できないっぽい?  IDEの見栄えが悪い   | 無料         |
| [VisalStudio Code](https://qiita.com/iota_11/items/5d805775ac2a42358427)       | .net Core    | VisaulStudio風にカスタマイズすれば近づけるが手順が多く煩雑　抜けが発生する | Gtk3 glade      | いろいろ拡張機能をインストール必要がある　      | 無料         |
| JetBrains Rider       | .net Core    | Visual Studio風で使いやすい　便利な機能が既に組み込まれている   | Gtk3 glade    | 毎月料金が発生する         | 月1600円         |

**VsCode**利用した開発環境の構築はこちらになります。

https://qiita.com/iota_11/items/5d805775ac2a42358427



開発環境がすぐ構築できそうななので
Riderを利用することにした。
とりあえず試用期間30日を利用してみる

JetBrains Riderをインストールする

```
 $ sudo apt update
 $ sudo apt install snapd
 $ sudo snap install rider --classic
 $ rider
```
https://www.jetbrains.com/rider/download/#section=linux

#### Riderを起動する
<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/6bedbea9-702c-7def-190b-9100c6acf981.png">
Ubuntuの環境でConsoleアプリの開発環境がすぐ出てくる

#### Riderの日本語化
Settings/Preferences→Plugins→Marketplace より “japanese” を検索して見つかる”Japanese Language Pack”をインストールする
<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/b7913d07-88a4-7c2d-5e5c-310e71c4161a.png">
<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/3541c5ff-7887-d789-d2ef-8e16401b423c.png">
標準で.net Core がインストールされている。
<img width="320" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/749b6cac-7bf1-89a3-3876-1bbbc45b32d7.png">
三角のボタンをクリックするとビルドができます。
##### Nugetはどこにあるのか？
<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/e28acaeb-a3e8-e73c-4a07-5b15ad894e1a.png">
左下にありました。右クリックからソフトをインストールできます。

###### エラーが出たときに最適なライブラリをNugetから検索してくれる機能
<img width="300" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/d102b76d-d9ba-769b-45db-342e455469a0.png">
ライブラリがインポートされていなくてエラーが出た時に、右クリックから最適なライブラリをNugetから検索してにいってくれます

##### オリジナルDllを読み込む
Assmbliesで右クリック - Add Reference画面 - Add Form　から　Dllを選択する
Dllがソリューションに読み込まれます。

<img width="350" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/5ad991eb-988c-62be-998d-cb27d33174fa.png">

### GladeとGTK３を組み合わせてGUIアプリを作る

GTK+-3.0をインストール。

```
 $ sudo apt install libgtk-3-dev
```

Gtk3デザイナ　gladeをインストール。

```
 $ sudo apt install glade
```

https://glade.gnome.org/

<img width="600" alt="スクリーンショット 2020-03-29 12.53.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/182324/71fe9414-bef2-8a70-05c5-514e2622a9ad.png">

GladeはGUIをデザインするソフトです。日本語にも対応しています。このGladeファイルと
Riderと.net Coreを併用してGUIアプリを開発していきます。

#### gladeチュートリアルサイト
http://blog.borovsak.si/2009/09/glade3-tutorial-2-constructing.html

>追記 注意
GTK3には.net CoreとMonoでビルドしたもの両方があります。
>[gtk-sharp Mono版](https://github.com/mono/gtk-sharp)
>[GtkSharp .netCore版](https://github.com/GtkSharp)
>アイコンとハイフンがあるかで見分けられます。

>mono ハイフンあり　gtk-sharp
>.net core　ハイフンなし　GtkSharp 

>MonoでビルドしたものはMonoのRunTimeで動いています。
>monodocなどdllはmonoでビルドしたものしか動きません。
>検索した時、名称と中身が逆になっていることがある


Gitにオープンソースを活動している方はRiderを無料で使用できます。

https://www.jetbrains.com/ja-jp/community/opensource

https://qiita.com/iota_11/items/5d805775ac2a42358427

https://qiita.com/iota_11/items/b3dfcc589829d470e32d

https://qiita.com/iota_11/items/4e4d77e91ca3e2223cfe

https://qiita.com/iota_11/items/28248108927cae4f1b46

https://qiita.com/iota_11/items/7074e21bf99cc56b69ce

https://qiita.com/iota_11/items/8cb89aae07a217778b47

[Ubuntu GTKアプリ開発の道](https://qiita.com/tana_/items/59251d0fe26982f194d1)へ続く