Visual Studio C#でデスクトップアプリを作るときに選択するプロジェクトテンプレートのメモ

身の回りでいろいろあって開発関連作業を全然していなかったけどまた始めようかと。
今まで進めていたのとは別のツールが欲しくてVisual Studioをインストール。
サクッとアプリ作ろうと思ったらプロジェクトテンプレートがいっぱいだったのでどんなテンプレートなのかをメモしておく。
選択基準も書こうと思ったけどメリデメをちゃんと整理するのが面倒になったのでやめた。

選択基準はこの辺とか参考になると思う
アプリ プラットフォームの選択 | Microsoft Docs

それぞれの特徴

言語にC#、プラットフォームにWindows、プロジェクトの種類でデスクトップを選択した際に私の環境で表示されたもの。
インストールしているコンポーネントによって内容に差があると思います。

NUnit テストプロジェクト(.Net Core)

他に作成したプロジェクトをテストする用のプロジェクトを作る。
ちなみに、NUnitJUnitを.Net coreでも使えるようにしたものとのこと。

Windows フォーム アプリケーション(.Net Framework

Windows Forms インターフェースを含むアプリケーション。
Windows Forms インターフェースはWindows API(GDI/GDI+)をマネージドコードでラップしたものとのこと。

WPFアプリ(.Net Framework

Windows Presentation Foundation (WPF) は、デスクトップ クライアント アプリケーションを作成する UI フレームワークとのこと。
グラフィック関連はDirect3Dを使用していて、環境に応じてGPUを使用するらしい。

WPF App(.Net Core)

WPFアプリ(.Net Framework)と同じだけど.Net Coreの範囲ってことだと思われます。
Windows以外でも動くけど当然Windows専用の機能は使用できない。)

WPF Custom Control Library(.Net Core)

WPFで新しいコントロールを作るときに選ぶやつ。
ここでいうコントロールはボタンとかリストボックスとかそういうの。

WPF User Control Library(.Net Core)

WPFで既存のコントロールの組み合わせを一塊にするときに選ぶやつ。

空白のアプリ(ユニバーサル Windows

ユニバーサル Windows プラットフォーム(UWP)を使用した空ウィンドウアプリ。
UWPはWindows 10で導入された各デバイスで共通のプラットフォームでWindows 10上であればデバイスを問わず(Hololensとかで)動く模様。

Windows フォーム アプリケーション(.Net Core)

Windows フォーム アプリケーション(.Net Framework)と同様。

Windows サービス(.Net Framework

Windowsで動くサービスを作る。

WPF ブラウザーアプリ(.Net Framework

WPFの機能を使用したWebアプリを作る。
実質的にWPFアプリと同様でWebを介して配信するってだけっぽい。
セキュリティ回りが厳しい組織内でのWPFアプリ配信方法くらいの認識でいいかも。

WPF カスタム コントロール ライブラリ(.Net Framework

WPF ユーザー コントロール ライブラリ(.Net Framework

それぞれCoreと同様。カタカナだったり英語だったり翻訳のばらつきが気になります……。

Windows フォーム コントロール ライブラリ(.Net Framework

Windows Formsアプリで新しいコントロールを作るやつ。
WPF Custom Control LibraryのWinForms版と解釈した。

共有プロジェクト

複数のプロジェクトで共有するプロジェクト。
マルチOS対応したアプリのコア部分とかに使うっぽい。
DLLとかにはせず参照しているプロジェクト側で自プロジェクトにあるかのようにコンパイルする。

空のプロジェクト(.Net Framework

ローカルアプリケーション用の空プロジェクト。
ピュアな(WPFでもWinFormsでもUWPでもない)デスクトップアプリ。

Windows アプリケーション パッケージ プロジェクト

MSIXパッケージを作成するためのプロジェクト。
MSIXはUWP用のインストーラのことっぽい。