Now browsing the archives for 12月, 2023.
[.NET MAUI] Hello Worldアプリ実行時にWinAppRuntimeのエラー
仕事でWindowsアプリケーション(WPF/XAML/C#/.NET)をiOSに移植するプロジェクトが立ち上がったことに伴い、本ブログを5年ぶりに再始動させて情報発信しようと思う。移植にあたり、現行アプリの資産をできるだけ流用するべく、開発環境はWindowsのまま.NET MAUIを使用してiOS向けにビルドする、という前提。
さっそく、Visual Studio 2022をインストールして.NET MAUIアプリケーションのHello Worldをしよう、という段階で早速つまづきまくった。
Windows 11+Visual Studio 2022 17.4.3
この開発環境は自宅PCで2023年1月時点で作ったものだが、特につまづくことなくすんなりとHello Worldアプリ(新しいプロジェクト作成→.NET MAUIアプリケーション)をビルドして、「Windows Machine」で実行までできた。
Windows 10+Visual Studio 2022 17.8.1
会社の開発用PCにて、2023年11月21日にリリースされた最新版のVS2022をインストールしてHello Worldアプリのソリューションをビルドしたところ、ビルドは成功するものの、「Windows Machine」で実行しようとすると下記が出力されてアプリが実行されない事態に陥った。
警告 DEP0840: プロジェクト ‘MauiApp’ には、バージョンが ‘3000.934.1904.0’ 以上のパッケージ ‘MicrosoftCorporationII.WinAppRuntime.Main.1.3_8wekyb3d8bbwe’ と ‘MicrosoftCorporationII.WinAppRuntime.Singleton_8wekyb3d8bbwe’ が必要です。これらのパッケージは、初回実行時にインストールする必要があります。インストールしていない場合は、http://go.microsoft.com/fwlink/?linkid=2222757 にアクセスしてインストール手順をご確認ください。 MauiApp
Windows App SDK 用の最新のダウンロードより、「インストーラー (x64)」のリンクから最新版のWindows App SDKランタイムをインストールしたが、ビルド後の結果は変わらず。
約1時間ほど試行錯誤した結果、以下の手順で無事解決してHello Worldアプリが起動できるようになった。
- Windows App SDK 14をアンインストール
Windows歯車アイコン→アプリ→インストールされているアプリ→Windows SDKで始まるものをひととおりアンインストール - Windwos App SDK 13をインストール
Windows App SDK 用の以前のバージョンのダウンロードより、ひとつ前のバージョンWindows App SDK 1.3のx64用ランタイムをインストール - パッケージのバージョンを確認
PowerShellを起動して「(get-appxpackage micro*win*appruntime* -AllUsers).packagefullname」を入力
以下の通りであることを確認
MicrosoftCorporationII.WinAppRuntime.Main.1.2_2000.802.31.0_x64__8wekyb3d8bbwe
MicrosoftCorporationII.WinAppRuntime.Singleton_4000.1049.117.0_x64__8wekyb3d8bbwe
最初に出た警告をよく見れば…WinAppRuntime.Main.1.3…とあるので、最新バージョンのWindows App SDK 14に含まれるWinAppRuntime.Main.1.4だとダメということなんだろうけど、一般人の考えだと最新バージョン入れときゃ大丈夫、って思うよな。どうやらSDKやらパッケージやらが複雑な依存関係になっているようだ。そもそもこのエラーに行き着く以前に、インターネット接続していないオフライン環境でNuGetパッケージが取得できずにビルド失敗したり、などなど相当な苦労もした。開発環境の構築時点でつまづきまくりで先が思いやらる…
macOS Sonoma+Visual Studio for Mac 17.6.7+Xcode 15.0.1
この開発環境は特につまづきなくすんなりとビルド成功し、iOSシミュレータでの実行までも問題なく成功した。
ただしmacOSとXcodeのバージョン組み合わせによってはWindowsのVisual StudioからMacへリモートアクセスしてiOSシミュレータを起動したときに問題発生した。
この件は後ほど。