最近公司的需求,要把控制设备的软体都开始转移到 UWP 架构上。因为涉及设备众多,开发单位也很多,所以就想实现用户按需加载对应设备代码的方式来减小包大小。研究一通发现,我所需要的正是 UWP 的可选包。
可选包,有点类似游戏的 DLC,是对主应用进行功能扩展的一个应用包。发布应用包时可以和主应用关联,用户安装了可选包,就具备了可选包的内置功能。
这里是微软官方的可选包文档。
但是里面只有关于如何创建一个工程的简述。实际实验遇到了一些坑,
- 引用可选包 XAML;
在主包引用可选包的 XAML 页面时,一直会报
XAML parsing failed.
的错误。最后在 Stackoverflow 上找到解决方案:
XAML 界面创建后,需修改构造函数,移除其中的this.InitializeComponent();
,添加如下代码:Uri resourceLocator = new Uri("ms-appx://<Optional Package Id>/<XAML Name>.xaml"); Application.LoadComponent(this, resourceLocator, ComponentResourceLocation.Nested);
其中的
<Optional Package Id>
填写可选包的Package Id
,可以在Package.appxmanifest
的Identity
标签的Name
属性找到。<XAML Name>
这是其对应的 XAML 文件名。 - 无法进行 Debug。这个目前还没找到解决方案。