.NET Core3.0でWindows Forms/WPFがサポートされたので早速試してみた


Microsoft connect(); 2018 にて、.NET Core 3.0 で Windows Forms / WPF がサポートされたと発表がありました。

blogs.msdn.microsoft.com

なので、早速試してみました。

なお、動作確認環境は、基本的に Windows 10 Professional になります。

.NET Core 3.0 Preview のインストール

下記サイトで、ご自身の環境にあった .NET Core 3.0 Preview の SDK をダウンロードおよびインストールします。Runtime は SDK をインストールすれば自動でインストールされます。

dotnet.microsoft.com

Visual Studio 2019 Preview のインストール

Microsoft connect(); 2018 では、Visual Studio 2019 Preview のアナウンスもされました。

blogs.msdn.microsoft.com

アナウンスによると、Visual Studio 2019 Preview では、.NET Core 3.0 をサポートしたとあるのですが、実際にインストールしてみたところサポートされていないようでした。日本語版だからかもしれませんが。

一応、.NET Core 3.0 の Windows Forms / WPF アプリケーションを編集することはできるので、Visual Studio 2019 Preview を以下よりダウンロードしてインストールします。タイトルは 2017 となっていますが、本文は 2019 なので問題ありません。

visualstudio.microsoft.com

Windows Forms アプリケーションの作成

Visual Studio 2019 では .NET Core 3.0 の Windows Forms アプリケーションを作成できないので、下記コマンドで Windows Forms アプリケーションを作成します。

> dotnet new winforms

そして、下記コマンドでビルド&実行します。

> dotnet run

実行結果は以下のようになります。

f:id:fnyablog:20181205094620p:plain:w320

この Windows Forms のプロジェクトを Visual Studio 2019 Preview で開くと画面の編集ができます。

但し、Windows Forms であるにもかかわらず、デザインビューが表示されないので、若干のカスタマイズぐらいしかできませんでした。

画面の表示文字を編集して実行したものが以下になります。

f:id:fnyablog:20181205095049p:plain:w320

WPF アプリケーションの作成

WPF アプリケーションを作成するには、以下のコマンドを実行します。

> dotnet new wpf

そして、下記コマンドでビルド&実行します。

> dotnet run

実行結果は以下のようになります。

f:id:fnyablog:20181205095422p:plain:w480

この Windows Forms のプロジェクトを Visual Studio 2019 Preview で開くと画面の編集ができます。

画面の表示文字を編集して実行したものが以下になります。

f:id:fnyablog:20181205095519p:plain:w480

macOS での動作

.NET Core なので、macOS でも Windows Forms / WPF も動作すると思ったのですが、どうやらそう簡単には行かないようです。

Windows では「Microsoft.WindowsDesktop.App 3.0.0-alpha-27128-4」が .NET Core のランタイムに含まれているのですが、macOS には含まれていません。

将来的にどうなるかは分かりませんが、現時点では .NET Core の Windows Forms / WPF は Windows オンリーのものだと考えてよさそうです。

参考までに、dotnet --infoを実行した結果も載せておきます。

  • Windows 10
>dotnet --info
.NET Core SDK (global.json を反映):
 Version:   3.0.100-preview-009812
 Commit:    e3abf6e935

ランタイム環境:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100-preview-009812\

Host (useful for support):
  Version: 3.0.0-preview-27122-01
  Commit:  00c5c8bc40

.NET Core SDKs installed:
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.402 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009426 [C:\Program Files\dotnet\sdk]
  3.0.100-preview-009812 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview-18579-0056 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-preview-27122-01 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0-alpha-27128-4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download
  • macOS
$ dotnet --info
.NET Core SDK (global.json を反映):
 Version:   3.0.100-preview-009812
 Commit:    e3abf6e935

ランタイム環境:
 OS Name:     Mac OS X
 OS Version:  10.14
 OS Platform: Darwin
 RID:         osx.10.14-x64
 Base Path:   /usr/local/share/dotnet/sdk/3.0.100-preview-009812/

Host (useful for support):
  Version: 3.0.0-preview-27122-01
  Commit:  00c5c8bc40

.NET Core SDKs installed:
  2.2.100-preview2-009404 [/usr/local/share/dotnet/sdk]
  3.0.100-preview-009812 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.0-preview2-35157 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.0-preview2-35157 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview-18579-0056 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.0-preview2-26905-02 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-preview-27122-01 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

おわりに

.NET Core 3.0 で Windows Forms / WPF がサポートされたことを確認してみました。

実際には、Visual Studio 2019 が .NET Core 3.0 を正式にサポートしないと Windows Forms は使えないと思いますが、WPF はなんとか使えそうです。

まあ、WPF も本番の開発に耐えれるかは分かりませんが。

ただ、macOS でも動作するようにして欲しかったというのが正直なところです。

今後の開発に期待します。