🫥

WinUI3のプロジェクトでMicrosoft.UI.Xaml.dllが見つからないエラー

2024/05/23に公開

先日のVisual Studioのアップデートで、WinUI3のプロジェクトテンプレートがVisual Studio Installerからもインストールできるようになりました。
以前は外部インストーラーを使っていろいろ準備が必要でしたが、これからは標準的な方法で開発環境を整えることができるようになりそうです。
開発環境がワンクリックで整う

さて、そんなプロジェクトテンプレートを使ってさっそくHelloWorldを決めようとすると、悲しいことに起動直後に例外が発生します。(System.DllNotFoundException)
新規作成直後の本当に何も変更してないプロジェクトで発生するためびっくりぽんです。
何もしてないのに壊れた

これはパッケージ化版のビルドではなく、アンパッケージ版(XCopyで配布)のビルドで発生します。例外メッセージの通り「Microsoft.UI.Xaml.dll」が実行ファイルと同じディレクトリに存在しないという状態なのですが、これはWindows App SDKから必要なバイナリをデバッグフォルダにコピーしてないということのようです。なので、下のようにcsprojにWindowsAppSDKSelfContainedを追加してあげると無事必要なバイナリがコピーされてエラーが解消します。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
~中略~
    <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
  </PropertyGroup>
~後略~
</Project>

Discussion