rksoftware

Visual Studio とか C# とかが好きです

.NET Core 3.0 でデスクトップアプリを作る(VS プレビュー版を使わない)

以前 .NET Core 3.0 で WPF や WinForms のデスクトップアプリが作れるようになるという発表があり、クラシックデスクトップアプリ界隈が非常に高い関心を示しています。そんな .NET Core 3.0 でデスクトップアプリですが、実際に試せるそうです。 単純に試すだけならこの非常に素晴らしいブログ記事の通りなのですが、私にはこの記事通りにいかない悲しい事情がありました。ディスク容量の問題で Visual Studio のプレビュー版をインストールすることが難しかったのです。

■ コマンドで頑張る

ということで、この記事では Visual Studio のプレビュー版をインストールせずに頑張ってみます。
前半部分は前述の記事をほぼなぞった内容ですので、読み飛ばしてもOKです。

.NET Core をインストール

前述の記事を参考に .NET Core 3.0 をインストールします。インストール後、次のコマンドでバージョンを確認します。

> dotnet --version
3.0.100-alpha1-009622

この記事を書いている時点では 3.0.100-alpha1-009622 というバージョンでした。

プロジェクトの作成

次のコマンドでプロジェクトを作成します。ここでは -n オプションを指定し wpfapp という名前でプロジェクトを作成しています。

> dotnet new wpf -n wpfapp
テンプレート "WPF Application" が正常に作成されました。

プロジェクトのフォルダが生成されるのでフォルダを移動します。

> cd wpfapp

dotnet コマンドでビルドを試みる(失敗)

dotnet コマンドでビルドを試みてみます。

> dotnet build

次のエラーが表示され失敗します。

WPF projects cannot currently be built with .NET Core MSBuild.  
Try running 'msbuild' instead of a 'dotnet' command (such as 'dotnet msbuild')

ちなみに VSCode でプロジェクトを開いてデバッグしようとしても、当然と言えば当然ですが同じ結果になりました。

MSBuild でビルドを試みる(成功)

※MSBuild はインストールしている Visual Studio のエディションによりパスが異なると思います。

> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"

ビルドに成功しました。Visual Studio 製品版のものでOKでした。
ちなみに製品版の Visual Studio で開いてビルド等しようとすると、.netcore3.0 は対応していない、といった内容のエラーになります。

実行

ようやく実行です。次のコマンドで実行できます。

> dotnet bin\Debug\netcoreapp3.0\wpfapp.dll

f:id:rksoftware:20180930210206j:plain
見事実行できました!

mac で実行(失敗)

.NET Core 3.0 でデスクトップアプリの報に対して多くの方が WPF などがクロスプラットフォームになるのかと期待したと思います。しかし残念ながら動作環境は Windows だけです。ですがとりあえず mac でもコマンドを打ってみましたしてみました。

> dotnet wpfapp.dll 
It was not possible to find any compatible framework version
The specified framework 'Microsoft.DesktopUI.App', version '3.0.0-alpha-26921-3' was not found.

当然ではありますが動きませんでした。残念。