ライブラリ、テスト、アプリの3つについてそれぞれ名付ける。
名前
何らかの製品を作成するとき、製品名を[ProductName]とする。これを基準にプロジェクト命名規則を決める。
| プロジェクト | csproj名 | 内容 |
|---|---|---|
| ClassLib | [ProductName] | 製品のビジネスロジック |
| NUnit | [ProductName].Test | ClassLibの単体テスト |
| App | [ProductName].App | ClassLibの実行アプリケーション |
アプリケーションには以下の種類がある。
| プロジェクト | csproj名 | 内容 |
|---|---|---|
| Console | [ProductName].ConsoleApp | CUIアプリ |
| Gtk# | [ProductName].GtkApp | GUIアプリ |
| Eto.Forms | [ProductName].EtoApp | GUIアプリ |
| ASP.NET | [ProductName].AspApp | Webアプリ |
| ASP.NET Angular | [ProductName].AspAngularApp | Webアプリ |
| ASP.NET React | [ProductName].AspReactApp | Webアプリ |
ソリューション
基本構造
- ソリューション
- プロジェクト
ソリューション名はスタートアッププロジェクト名と同じにする。
テスト用
ClassLib + NUnit
- [ProductName].Test.sln
- [ProductName].csproj
- [ProductName].Test.csproj
アプリ用
ClassLib + Console
- [ProductName].ConsoleApp.sln
- [ProductName].csproj
- [ProductName].ConsoleLib.csproj
- [ProductName].ConsoleApp.csproj
ClassLibは以下の2種類。
| プロジェクト | .NET環境 | 実装内容 |
|---|---|---|
| [ProductName].csproj | .NET Standard | ビジネスロジック |
| [ProductName].ConsoleLib.csproj | ConsoleAppと同様(.NET Core or .NET Framework) | Console用ライブラリ |
ClassLib + Gtk
- [ProductName].GtkApp.sln
- [ProductName].csproj
- [ProductName].GtkLib.csproj
- [ProductName].GtkApp.csproj
ClassLibは以下の2種類。
| プロジェクト | .NET環境 | 実装内容 |
|---|---|---|
| [ProductName].csproj | .NET Standard | ビジネスロジック |
| [ProductName].GtkLib.csproj | GtkLibと同様(.NET Framework) | Window実装ライブラリ |
ClassLib + Eto.Forms
- [ProductName].EtoApp.sln
- [ProductName].csproj
- [ProductName].EtoApp.csproj
- [ProductName].EtoApp.Desktop.csproj
| プロジェクト | .NET環境 | 実装内容 |
|---|---|---|
| [ProductName].csproj | .NET Standard | ビジネスロジック |
| [ProductName].EtoApp.csproj | .NET Standard | Window実装 |
| [ProductName].EtoApp.Desktop.csproj | .NET Framework | エントリポイント |
統合
[ProductName].sln
- [ProductName].csproj
- [ProductName].Test.csproj
- [ProductName].ConsoleLib.csproj
- [ProductName].ConsoleApp.csproj
- [ProductName].EtoApp.csproj
- [ProductName].EtoApp.Desktop.csproj
ラズパイではこの構成にできない
よって単体テストはdotnet、Eto.FormsはMonoDevelopでソリューション作成すべき。Consoleはどちらでも可。