VisualStudio2022でWinUI3アプリをMicrosoftストアに公開できるようにMSIXパッケージ化する

## 当たり前すぎるのかどうやったらいいのかわからなかった
アプリをMicrosoftストアに公開したい！と思っており、コツコツ作ってきました。
満足できてない部分もたくさんあるけど、そろそろ一度公開したい！
Microsoftに個人開発者として登録もしたゾ！
やるぜ！MSIXパッケージ化！！

でもどうやって？

## いきなり結論：パッケージの部分で右クリックして、公開
ソリューションエクスプローラーでパッケージのところで右クリック、公開 でパッケージにできます。（2025/02/14現在）

ただその前にビルトが必要で、もしかすると発行も必要かも？しれません
（発行が必要かはちょっとよくわかってません。発行はexeを作る処理のようなので、要らないんじゃないか？と思ってます）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679605/10a945ec-cf1f-42b1-a000-515f8d3b2400.png)

## 環境
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.13.0
2025/02/14 現在

## わたしの迷いポイント１：Microsoftのドキュメントに騙される
以前、Azureの設定で、結局Microsoftのドキュメントが一番良かったので、圧倒的信頼をしていたMicrosoftのドキュメント。
たぶん該当するのはこちら。

https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/single-project-msix?tabs=csharp

2023/12/29と、ちょっと古いかな？とも思いましたが、あまり変わってないのだろう、と進めていきます。

>単一プロジェクト MSIX は、個別のパッケージ プロジェクトを必要とせずに、パッケージ WinUI 3 デスクトップ アプリを構築できるようにする機能です。 WinUI 3 アプリは、ユーザー インターフェイス (UI) に WinUI 3 フレームワークを使用し、Windows App SDK を使用するアプリです。

そうそう！合ってる合ってる！

>別のパッケージ 化プロジェクトを使用する既存の WinUI 3 デスクトップ アプリを変更します。 この変更には、次の図に示すように、個別のパッケージ 化プロジェクトを削除する必要があります。

![single-project-overview[1].png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679605/028352be-5be4-47f9-955a-1bf2672777c8.png)
https://learn.microsoft.com/ja-jp/windows/apps/windows-app-sdk/images/single-project-overview.png

ほうー？
できたパッケージ消しちゃうんだ？？
ほうー・・・？

---
VisualStudio2022で、C#、WinUI3で作ろうとした時に、新規作成で出てくるメニューがこちら。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679605/a69b1618-8f8d-4761-8183-59e2e5262465.png)

わたしはこの中から3番目の、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化（デスクトップのWinUI3）"というものを選んで、これまで開発してきていました。
Microsoftストアに提出する時は、MSIXパッケージ！ということはなんとなく知っていたので、その文言が入っている3番目を選びました。

するとできる形は、ソリューションエクスプローラーで見ると下記のような感じに。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679605/886e4b61-8411-460f-b385-b365ce47c058.png)

C# というところと、Packageというものの2つが自動的に作られます。
開発過程では、主にC#の方のMainWindow.xamlやMainWindow.xaml.csを編集してきました。
でもビルドして▶実行する時はPackageの方を実行していました。

---

そのパッケージを削除・・・？
確かにこっちはあまり編集してないし、いらないのかな？（じゃなんで作られるんだ？）
でもMicrosoftさんが言うんだし、いいんだろう！
・・・
やってみた！ ⇒ うまくいかない！
いろんなエラーが出続けて、ビルドも通らず実行もできない事態に！
バックアップも取らずに削除してしまったので、復旧するのもちょっとめんどくさかったです。（いまどきファイル管理ｪ-）

その時出たエラーは、

- アセンブリのサイズの最適化は、選択された公開構成に対してはサポートされていません。自己完結型のアプリを公開していることをご確認ください。
　⇒ トリミングができない？まぁトリミングしないにしてみるか
- アセンブリのパフォーマンスを最適化できません: 有効なランタイム パッケージが見つかりませんでした。publishreadytorun プロパティを false に設定するか、公開時に、サポートされているランタイム識別子を使用してください。.net 6 以降を対象とする場合は、必ず publishreadytorun プロパティを true に設定してパッケージを復元してください。
　⇒ .NET8なんですが、一体わたしはどうすれば・・・
　⇒ とりあえず.NET8SDKや.NET9SDKを入れてみましたがダメでした。

この辺で、記事も古かったし、このやり方は間違っているんだろう、と諦めました。
ここまででたぶん２～３日は遊んでました。

## わたしの迷いポイント２：アセンブリのサイズの最適化は、選択された公開構成に対してはサポートされていません。自己完結型のアプリを公開していることをご確認ください。
これがよくわかりません（今でもよくわかっていません）
 「アンタさっきまで元気に動いてたやん！？」
 
パッケージにできた直前でも同じエラーが出て、
「はぁー、またキミかー・・・」
と~~ウンザリ~~思いました。

調べてみると、どうもnugetパッケージ周りらしく？、nugetパッケージを更新したらいいとかなんとか。
試しにnugetの画面で"最新の情報に更新"を押して、パッケージをリビルドしてみると通りました。
なんかこの辺よくわからないのですが、通ったので、たぶんこれかな？と思ってます。
下の画像の一番上のILLink.Tasksというのが勝手に出たり消えたりしてて、どうもガンっぽいです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3679605/058a8b5f-b01f-4a23-9d10-a08178d8eb5e.png)


## まとめ
- WinUI3のパッケージ化は、"空のアプリ、パッケージ化"でなくても、"空白のアプリ、Windowsアプリケーションパッケージプロジェクトでパッケージ化（デスクトップのWinUI3）"でもできるよ！
- Microsoftのドキュメントでも、なんか違うことだってあるよ！
- アセンブリのサイズの最適化云々は、nuget周りらしいので、最新化したら直るかもしれないよ！
- 当たり前すぎるのか、github actionでパッケージ化するのが主流なのか、あまりそれらしい記事が見つからなかったので、そっと残しておきます（無駄に苦労したし）