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

今回は.NETの話をしたいと思います。前回記事は.NET Coreを使用した記事がありますのでそれを読んで頂けると良いと思います。

そう。前回記事の時に来月.NET 5がリリースされます!と記事にしましたが予定通り11/10に.NET 5が正式リリースされました。

[速報]マイクロソフト「.NET 5」正式リリース。1つのフレームワークでWindows/Mac/Linuxのデスクトップ、サーバアプリ、Webアプリなどが開発可能に

当初予定ではXamarinも入る予定でしたが、コロナ等様々な情勢が影響し、1年後の.NET 6に入るのでご注意ください。

.NET 5 自体の説明は前回の記事に載せておりますので今回は割愛させて頂きます。

これから流行る?

.NET 5 も一年毎にバージョンに番号増やしてLTSバージョンの有無は分けるみたいです。前回のセクションでやったLaravelと一緒ですね。C#といえばゲーム開発で有名なゲームエンジン:Unityがありますがこちらも将来的には.NET x シリーズに組み込まれるような図が下記サイトにありますが、今の所Unity側にそういった記述がないため、実現性は不明です。

Introducing .NET 5

統合はされるが個々で見た場合に新規の要素はない

.NET Coreの記事でも書きましたが、元は.NET Frameworkの機能を統合した.NET Core シリーズ(3.1)の後継バージョンのため、今の所新規に何かできるようになったという訳ではありません。もちろん更にバージョンが進んだらわかりませんが現時点ではそういった発表もないため、後3年くらいはXamarin等、まだ対応できていない機能の統合をしているのではないでしょうか。

.NET のフロントエンドではWindows FormWPFがありますが、これ自体はかなり前からある技術という事実も変わらず、サーバサイドで見てもC#のバージョンは9.0に上がっていますがこれといった決定打もなく、.NET 5になったからと言って、IT技術の勢力図が変わる事はないと予想してます。

既存バージョンからの載せ替えはオススメ

既にサーバーサイド代表:3大フレームワークやJavaScript関連のフレームワークを使っているプロジェクトからすれば移行するメリットはありませんが、元々.NET Frameworkや.NET Coreで作られたシステムの.NET 5 への移行はオススメしたいです。

  • .NET Framework.NET 5が出た時点で非推奨になりました。既に4.8でメジャーアップデートは終わっており、今後もセキュリティサポートは続くとアナウンスはあるが、Windows自体の今後が不透明のため、どこまで信頼できるかがわからない。(Windows 10以降を出すつもりはないらしいが今後Windowsに取って代わる新OSを出す可能性も普通にある 2021/6/25に Windows11が発表されました
  • .NET 5 を使いたい理由6選に記載がありますが既存ライブラリのパフォーマンスが大きく向上したそうです。C#の中で便利で需要高いasync/await・コレクション・LINQのパフォーマンスが向上しているのはいいですね。
  • 開発が大きく変わる.NET5。その概要と移行方法をご紹介。(2022/02/11のチェックでリンク切れ)にあるようにアプリケーション内に .NET 5 を同梱することが可能とあり、個々が.NET 5 を入れる必要はないので顧客への影響はないし、たまに運用で発生する.NET frameworkの問題も解消される。

 WPFが使えるか検証

それでは本題である.NET 5でWPFが使えるか検証したいと思います。

ダウンロードはここでできます。以前した.NET Frameworkから.NET Coreへの移行は新規にインストールしたり、csprojが影響したり、単純な移行は難しいイメージでしたが今回はどうなのでしょうか。

特に何事もなく終わりました。

Visual Studioの対応バージョンは16.8以降

これも最近更新されたバージョンです。これもアップデートする必要があります。サイズでかい・・・

インストール完了後は、.NET Frameworkから.NET Coreに乗り換えたような新たなVisual Studio内インストールは不要で、Appを開いたら.NET 5.0が選択できるようになります。

これで.NET 5.0への切り替えは終わりです。簡単ですね^^

動かしたら一つだけ警告

MicroSoft.NET.Sdk.WindowsDesktop SDKを使用する必要はなくなりました。ルートプロジェクト要素のSDK属性を’Microsoft.NET.Sdk’に変更することをご検討ください。

長い警告名ですが、Microsoft.NET.Sdk.WindowsDesktop SDKを使用する必要はなくなりました。のサイトでcsprojを修正すれば完全にエラーがとれて起動できるようになりました。

まとめ

.NET 5 でもWPFは普通に動く

.NET Coreからの移行はインストール後、使用するフレームワークを選択し直し、今回警告が出た箇所を直せば良いだけなので簡単。しかし.NET Frameworkからの移行は.NET Coreへ移行した時の手順をやらなければならず、構成を組みなおす必要があるので全ルートテストも含めるとちょっと大変ですね。

ただ、既に非推奨になった.NET Frameworkをこれからもサポートするとは私には考えられませんし、.NET Frameworkが原因による問題が発生したりしますし、顧客が別途.NET 5を入れる必要なく今回のアプリが動くのであれば来年のLTSバージョンが出た辺りで移行を検討した方が良いと思いました。