「空のプロジェクト」からWPFアプリケーションを作成する方法は、WPFで、xamlやデザイナーを使わずにUIを作成する際や作成方法を説明する際に使用すると便利です。
最小のWPFアプリケーションを作成する
先に紹介した、「最小のWPFアプリケーション」を自分で入力して実行してみることにします。
Visual Studio Community 2017を使って作成しています。

「ファイル」、「新規作成」、「プロジェクト」を選択します。

「Visual C#」、「Windowsデスクトップ」、「空のプロジェクト(.Net Framework)」を選択します。名前とプロジェクトの場所は、適切なものを入力して下さい。

右側のソリューション・エクスプローラの参照の項目で、右クリックし、参照の追加を選択します。

アセンブリを選択し、PresentationCore、PresentationFramework、System、およびWindowsBaseの項目にチェックを入れます。

ソリューション・エクスプローラー上のプロジェクトで、右クリックし、「追加」、「クラス」を選択します。

名前を指定して、クラスを追加します。
作成したクラスにコードを入力します。
// MyApp.cs
using System;
using System.Windows; // the root WPF namespace ルートのWPF名前空間
namespace MyFirstWpfApp
{
class MyApp
{
[STAThread]
static void Main()
{
// the WPF message box WPFのメッセージボックス
MessageBox.Show("Hello, WPF");
}
}
}

ディバッグ・メニューからディバッグなしで開始を選択し(あるいは、Ctrl + F5を押す)、プログラムをコンパイルして実行します。

ダイアログボックが表示されます。OKをクリックします。

コンソールにメッセージが表示されます。何かキーを押すとアプリケーションが終了します。

このプログラムでは、コンソール・ウィンドウも実行されています。 このコンソール・ウィンドウの存在は、プロジェクトのプロパティのコンパイラ・フラグによって制御します。 変更するには、ソリューション・エクスプローラーから、プロジェクト名をクリックし、プロパティを選択します。

出力の種類に、コンソールアプリケーションが表示されていると、コンソール出力が行われ、Windowsアプリケーションが選択されていると、コンソール出力は行われません。
プロクラム開発時に、コンソール出力を行うと、プログラムの進行をコンソールに表示するしたり、無限ループに入ったときに、コンソールウィンドウで、Ctrl+Cを入力することで、アプリケーションの実行を中断することができるなど、有効に活用することができます。ただ、アプリケーションが完成した際に、コンソール出力を行わない状態に変更してから、配布するように注意しましょう。
WPFアプリケーションを作成する場合、通常は、プロジェクトテンプレートに、「WPFアプリ(.NET Freamework)」を使います。しかし、実行したいコードが以下の形式である場合、今回紹介した方法を使います。
[STAThread]
static void Main()
{
// アプリケーションの処理
}
参考書籍
