やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

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
  • ラズパイではこの構成にできない

    • ラズパイではNUnitプロジェクトを実行してもメモリ不足エラーになる
      • 単体テストdotnetコマンドで作成&ビルド&実行せねばならない
    • EtoAppは.NET Frameworkを使っているためLinuxでビルドするにはMONOでないとビルドできない

 よって単体テストdotnet、Eto.FormsはMonoDevelopでソリューション作成すべき。Consoleはどちらでも可。