【WPF(XAML)C#5】.NET Core 3.1でもWPFが使えるか?

フリーランスでの活動も進めたいので最近フリーランスエージェント会社の担当者と打ち合わせしたのですが経歴の説明の所である質問をされました。

担当者

.NET Coreは使ったことありますか?

え。ないです・・・。(前にもどこかで書いたやりとり)

確かに今業務で使っているWPFは.NET Framework上で動くタイプです。だけど、「え? .NET Frameworkじゃないの?そもそも.NET Coreって??」と話を聞いて思ったので調べてみた

.NET Coreとは?

開発現場において「Windows Forms アプリケーション」や「WPF アプリケーション」といった Windows向けアプリケーションお開発を行なっている場合は、「.NET Core」や「.NET Standard」は馴染みが薄く、違いについて混乱があるように思えます(筆者がその一人です)。

.NET Framework / .NET Standard / .NET Core とは何か?

自分もやん!!と思ったので読んでみたら今までは

  • .NET Framework = WPF・Windows Forms・ASP.NETに使われる所謂Windowsアプリ向けフレームワーク
  • .NET Core = Linux系 OS(Debian, Fedora, Ubuntu, etc)に使われるクロスプラットフォームを対象としたフレームワーク

クロスプラットフォームは仕様が全く異なる機械(ハードウェア)またはオペレーティングシステム)上で、同じ仕様のものを動かすことが出来るプログラム(ソフトウェア)のことらしい

という位置づけだったようで、確かにそれなら知らなくても無理はない…と思っていました。ただ、見ていくうちに下記サイトで重要な解説を見つけました。

Windows上でのみ動作する.NET Framework(=従来の.NET)は、2002年に最初に登場して以来、バージョンアップを重ねてきた。それに対し、Windows・Linux・macOSで動作するクロスプラットフォームな.NET Coreが発表されたのが、2014年11月12日のことである。

.NET Coreとは? 開発環境(SDKとVisual Studio Code)のインストール

.NET CoreでもWPFが作れる?

.NET Frameworkの使うWPFは2002年から使えるようになったもので今からするとだいぶ古く、.NET Coreは比較的新しめに出ている事がわかりますね。なのでCoreの方がモダンな技術という事になるのですが、実は去年(2019年)に.NET Core 3になってからWPFにも対応したみたいなのです。

そしてさらにWikipediaによると下記の文献を見てほしい。

.NET Frameworkはもう時代遅れ?

バージョン4.8をもって.NET Frameworkのメジャーアップデートを終了することがアナウンスされている。後継は.NET Coreの次期バージョンとなる予定の.NET 5である。

.NET Framework 出典: フリー百科事典『ウィキペディア(Wikipedia)』

.NET Framework メジャーアップデートを終了する。という事は、これ以上バージョンが上がらないという事を意味しますよね。そうなってくると.NET Framework で書くWPFはもう時代遅れということに!

さらに次を見ていくと

2020年11月に .NET 5 がリリースされる予定とのことです。これにより、今後は .NET が1つだけになり、 Windows、Linux、macOS、iOS、Android、tvOS、watchOS、WebAssembly などをターゲットにできるようになるとのことです。

.NET Framework / .NET Standard / .NET Core とは何か?

引用元の記事は2019.11.12に投稿されたものですが、これって来月?これから.NET関連の技術者は.NET 5 を使っていくのがモダンな環境に対応するのに必須ということですよね。

以前のセクション記事で「去年から1年くらいで結構XAMLの技術サイト増えた」と書いた気がしましたがこれが影響しているのか…。確かに何年もC#.NETやってる技術者からすれば常に新しい環境に対応していくのは大事な事ですよね。

という訳でイナコーシステムのXAML記事も今後は.NET Coreフレームワークを使用して書いたものをベースにあげていきたいと考えています。従来の.NET frameworkの時との違いも説明できればと思うし。

.NET Core を入れてみよう

今の.NET Coreのバージョンは3.1みたいなのでインストールしてみます。この記事で環境にあったものを入れてみましょう。

Windows に .NET Core をインストールする

すぐに完了しました。この後Visual Studio のインストーラーに入り、以下の二つを選択。

インストール後、新規にプロジェクトを開いてみると以下が追加されていました!説明が.NET Frameworkと同じですがちゃんと(.NET Core)と書いてあります。

WPF Libraryとか似た名前もあるので注意してくださいね。(最初間違えてMainがない云々で怒られた;;)

開いてみたら構成も.NET frameworkと同じでフレームワークはきちんと.NET Coreになっていました。後は前のプロジェクトからファイルを移動すればいけそうです。

これで今後は.NET Core環境でWPFを作成できますので以後のセクションは Coreをベースにしたものと思って頂ければ幸いです。

うちの会社の実務プロジェクトも多分 .NET Coreへ移行した方がいいんでしょうけど、お客様の環境も.NET frameworkだからなー。簡単にいけるのかなー?

~追記~

プロジェクトを前のプロジェクトから移行したらファイル情報を保存するcsprojの構成が少し違っていました。ちなみに.csprojとはファイルを追加した時に自動で追加されるソースのインクルードファイルみたいなものです。通常はいじる必要はありませんが.NET Frameworkからの移行時は書かれないものがあるのか、天気のImageファイルだけ.csproj.userの方に自分で追加しました。それで.NET coreでも立ち上げに成功しました。

.NET Framework .csprojだけ
.NET Core .csprojと .csproj.user の二つの.csprojがあって、 .userの中にファイル情報が保存されているっぽい

という訳で今回は以上です。お疲れ様でした!