Win32 Desktop Bridge でアプリを Microsoft Store 配布用に MSIX パッケージ化した場合、デフォルトのままでは、x64 でパッケージ化しても、実際には 64 ビットなアプリにはなりません(Visual Studio 2022 17.0.4 現在)。
状況整理
パッケージプロジェクト(TestMsStoreWpf_Package)の[公開 → アプリパッケージの作成]で MSIX パッケージを作成する際、アーキテクチャを x64 にしただけでは、x64 なアプリは作成されません。
しかし実際には、Environment.Is64BitProcess は false が返ってきますし(パッケージ化する前はちゃんと true が返ってきます)、4 GB 以上のメモリアロケートもできません。なんちゃって 64 ビットアプリになってしまっています。
解決方法
【注意】本記事の解決方法は情報が古くなりました。新しい解決方法については、こちらをご覧ください。備忘として以下を残しておきます。
しかしこうすると、本体プロジェクトはビルド・実行できるのですが、パッケージプロジェクトで MSIX パッケージを作成しようとすると、次のようなエラーになってしまいます。
資産ファイル '~\obj\wappublish\win-x64\project.assets.json' が見つかりません。
以降で、きちんとビルド・実行できるように対策していきます。
間違いを防止するために、いったん、本体プロジェクトの bin フォルダー・obj フォルダーを削除します。
obj フォルダーの中に wappublish フォルダーを作成し、さらにその中に win-x64 フォルダーを作成します。
作成した win-x64 の中に、project.assets.json を含む 5 つのファイルをコピーします(project.assets.json だけでもいいのかもしれませんが)。
先頭付近にある targets セクションの、「"net6.0-windows10.0.19041": {}」の行末にカンマを追加し、その次の行として「"net6.0-windows10.0.19041/win-x64": {}」を追加します(ターゲット OS バージョンが 10.0.19041.0 の場合)。
"targets": {
"net6.0-windows10.0.19041": {},
"net6.0-windows10.0.19041/win-x64": {}
},
その後パッケージプロジェクトをビルドすると、真に 64 ビットの MSIX パッケージが作成されます。パッケージをインストールしても、Environment.Is64BitProcess が true になります。
なお、パッケージプロジェクトビルドの際に「アプリケーション マニフェストが無効なため、アプリケーション パッケージを作成できませんでした。アプリケーション マニフェストのエラーを修正してください。」というエラーになる場合がありますが、構わず再度ビルドするとビルドできます。このエラーは、x64 かどうかに関わらず発生します。