概要
パッケージングしないプロジェクトで、プロジェクトファイルに<WindowsPackageType>None</WindowsPackageType>
を設定していても、下記のようにXamlCheckProcessRequirements()
でUnable to load DLL 'Microsoft.ui.xaml.dll'
でエラーとなってはまってしまった。
しかもビルドターゲットをx64としたのときのみ現象が発生し、x86では現象が発生しないという状態で、情報をいくら探しても解決することができなかった。
解決策
結論から言うと、インストールしたWindowsAppRuntimeのフォルダの権限がまずかったようで、コマンドプロンプトで下記のコマンドを実行することで解決できた。
※ ファイル名の部分はPowerShellでGet-AppPackage
などで各々の環境のRuntimeに合わせて変更してください。
takeown /f “C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe” /r /d y
icacls.exe “C:\Program Files\WindowsApps\Microsoft.WindowsAppRuntime.1.1_1005.616.1651.0_x64__8wekyb3d8bbwe” /grant Users:(RD,R,REA,RX) /t
x64のプロジェクトファイルでのみ現象が発生していると煮え切っていたが、パッケージプロジェクトを実行した際にx64のみでXAMLのホットリロードが効かなかった。(x86では効いていた)
ここを糸口にしていろいろ探している際に、以下のgithubのissuesを見つけ、試してみるとうまくいった。
MSストアからのアップデートで権限がおかしくなったのか、はたまたVisual Studioを管理者権限で実行してデバッグしてしまったのか、真因は不明だが、何はともあれ解決できてよかった。