C#プロジェクトの名前について考えてみた
ライブラリ、テスト、アプリの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はどちらでも可。