Blinue / Magpie

An all-purpose window upscaler for Windows 10/11.
GNU General Public License v3.0
9.66k stars 496 forks source link

支持 XAML 热重载 #810

Closed Blinue closed 10 months ago

Blinue commented 10 months ago

这个 PR 很大程度上参考了 TranslucentTB 的实现方式,主要区别在于我们不是打包应用。

根据我的测试,xbf 必须位于子 ResourceMap 中才能支持热重载,现有的编译方式(编译为 AppX)无法做到这一点。这个 PR 中 Magpie.App 不再编译为 AppX,这意味着现在要处理一些琐事:

  1. 不再自动生成 resource.pri,我们必须自己来生成。
  2. 也不再生成 AppxManifest.xml,现在需要通过其他方式获取可激活的 WinRT 组件。这里参考了 TranslucentTB 的实现方式,即解析 winmd 来生成清单文件。
  3. ResourceLoader::GetForCurrentView() 会抛出异常,因为字符串资源不再位于根 ResourceMap,应替换为 ResourceLoader::GetForCurrentView(L"Magpie.App/Resources")