やってみる

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

LinuxにおけるMonoDevelopでのプロジェクト作成ベストプラクティスについて考えてみた

 MonoDevelopは.NET Core非対応。それを考慮してLinuxで動作する最善のプロジェクト作成方法について考えてみた。

対象環境

プロジェクト構造

  • ソリューション
    • プロジェクト(ClassLib)
    • プロジェクト(Test)
    • プロジェクト(App)
プロジェクト 概要
ClassLib 実装。Test, Appで参照する
Test ClassLibの単体テスト
App 実行環境。CUI, GUI, Web。

思想

  • ビジネスロジックの実装はすべてClassLibに含める
  • Appで各環境に対応
    • ClassLibを参照する
      • ClassLibは.NET Coreでなく.NET Standardにすることで多環境に対応
    • Appの実装は単体テストしない(できない)

MonoDevelop

プロジェクト新規作成ダイアログ

  1. MonoDevelopを起動する
  2. メニュー→ファイル新しいソリューション
  3. 新しいプロジェクトダイアログが出る

 以下のようにそれぞれ選択してプロジェクト作成する。

ClassLib

環境 概要 MonoDevelopダイアログ
.NET Standard Core, Framework, MONOでも動作可 マルチプラットフォーム > .NET Standard ライブラリ
.NET Core MONOはCore非対応(ビルド&実行不可) .NET Core > ライブラリ > クラス ライブラリ
.NET Framework MONOでビルドすればLinuxでも使える その他 > .NET > ライブラリ

 以下の基準で決めればいい。

  1. 最も多環境に対応できるStandardを利用する
  2. Standardの実装にないAPIを使いたいならFrameworkを利用する

App

 実行環境。CUI, GUI, UnitTestなどを実行する。ライブラリ以外の実行バイナリ全般。

 .NET Standardは使えない。.NET Standardは仕様でありクロスプラットフォームAPI群にすぎない。実行バイナリを作成するには具体的な環境依存した.NET Coreか.NET Frameworkを使用する必要がある。MonoDevelopの場合は.NET Frameworkのみ可