C#や開発環境の勉強として。
成果物

着想
- C#を勉強したい
書きたいことを書けるようになりたくて。
所感
C#開発の手順を理解できた。実際に動くコードを書けたので自信がついた。それなりに満足。
C#は書いてて気持ちいい。JavaScriptやPythonより好き。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch(9.0) 2018-06-27
- Mono 5.16.0
- MonoDevelop 7.6 build 711
- Eto.Forms 2.4.1 拡張機能, NuGetパッケージ
- .NET Core 2.2, MonoDevelop参照方法
前回まで
dotnetコマンドは.NETプロジェクトを作成するコマンド。.NET Coreをインストールすることで使用できる。
- C#の実行環境について調べた(.NET Framework, .NET Core, .NET Standard, MONO)
- Raspbian stretch に .NET Core 2.2.101 をインストールした
- Raspbian stretch MonoDevelop で .NET Core 2.2.101 を参照する(.NET Standard 2.0)
- Raspbian stretch dotnet コマンドで .NET Core コンソールアプリ プロジェクトを作成&ビルドし実行できた
- Raspbian stretch dotnet コマンドで .NET Core コンソールアプリ+EFCore+SQLite3 プロジェクトを作成できた! やっとできた!
- Raspbian stretch dotnet コマンドについて調査する
- .NET開発環境とプロジェクトの対応パターンについて調べた
- .NET開発環境とプロジェクトの対応パターンについて調べた
- dotnetコマンドでClassLib+NUnit+Consoleプロジェクトを含め参照設定したソリューションを作成してみた
- .NETファミリとプロジェクトとIDE、どれを使えばいいの?
- dotnet new コマンドのサードパーティ製カスタムテンプレートを調べてみた(dotnet new -i "Eto.Forms.Templates::*")
- Raspberry PiにVisual Studio Codeをインストールしてみた
- LinuxにおけるC#開発環境
- LinuxにおけるMonoDevelopでのプロジェクト作成ベストプラクティスについて考えてみた
- Raspbian stretch MonoDevelop で NUnit プロジェクトがメモリ不足により実行できない
- C#プロジェクトの名前について考えてみた
C#用.NET開発環境には以下のソフトウェアがある。
| ソフトウェア | 説明 |
|---|---|
| .NET Framework | Microsoft製のWindowsでしか使えない閉鎖環境 |
| MONO) | LinuxやiOSでも使える公開環境 |
| .NET Core | オープンソースな最新.NET環境 |
| .NET Standard | 仕様+API実装。全.NET環境に共通する基本API群 |
SDKが対応する.NET環境は以下。
| SDK | .NET環境 |
|---|---|
| dotnet | .NET Standard, .NET Core |
| MONO | .NET Standard, .NET Framework |
プロジェクトは目的別におおよそ以下の三種類ある。
| プロジェクト | 目的 |
|---|---|
| ClassLib | ライブラリ。他のプロジェクトから参照するAPI群。 |
| UnitTest | 単体テスト。アプリの一種だがコード品質管理が目的。 |
| App | アプリケーション。CUI, GUI, Webなどの各種環境で実行する。 |
SDKごとの開発可能なバイナリは以下。
| SDK | 開発するバイナリ | 対応する.NET環境 |
|---|---|---|
| dotnet | ClassLib | .NET Standard, .NET Core |
| dotnet | NUnit | .NET Core, (Winのみ.NET Frameworkも可) |
| dotnet | Console | .NET Core |
| dotnet | Eto.Forms | Winのみ可(Eto.Formsが.NET Framework依存のため) |
| MONO | ClassLib | .NET Standard, .NET Core(実行エラー), .NET Framework |
| MONO | NUnit | .NET Core(実行エラー), .NET Framework(メモリ不足で実行エラー) |
| MONO | Console | .NET Core(実行エラー), .NET Framework |
| MONO | Eto.Forms | .NET Framework |
開発するバイナリごとにおけるベストな環境は以下。
| プロジェクト | 環境 | 説明 |
|---|---|---|
| クラスライブラリ | .NET Standard |
.NET Standard, .NET Core, .NET Frameworkから参照できる |
| テスト | .NET Core |
dotnetがあればWindows以外でも可 |
| ConsoleApp | .NET Core |
dotnetがあればWindows以外でも可 |
| ConsoleApp | .NET Framework |
MONOがあればWindows以外でも可 |
| Eto.Forms | .NET Framework |
MONOがあればWindows以外でも可 |
開発環境とソリューションは以下のように分けること。
| ソリューション | 開発環境 | .NET実行環境 | プロジェクト |
|---|---|---|---|
| 単体テスト用 | dotnet | .NET Core | ClassLib, NUnit |
| Console Application 用 | dotnet | .NET Core | .NET Core|ClassLib, ConsoleApp |
| Console Application 用 | MonoDevelop | .NET Framework | .NET Core|ClassLib, ConsoleApp |
| Eto.Forms Application 用 | MonoDevelop | .NET Framework | ClassLib, EtoApp |