内容简介:今天Osirisoo0O小哥遇到了个诡异的问题:UWP项目,我按照他说的测试一番,结果一毛一样。道理我都懂,可我写的是进程外后台任务,你给我提示进程内服务需要xxx是什么企图。折腾了一段时间,不明白为什么会出现这个,但是整理出了一个临时的解决方案:
今天Osirisoo0O小哥遇到了个诡异的问题:UWP项目, 目标版本 和 最低版本 都是 17763 的时候,按照文档编写进程外后台任务,编译是通不过的。会提示类似下面的内容:
If it is not an audio background task, it is not allowed to have EntryPoint="BgTest.BackgroundTask.ToastTask" without ActivatableClassId in windows.activatableClass.inProcessServer.
我按照他说的测试一番,结果一毛一样。道理我都懂,可我写的是进程外后台任务,你给我提示进程内服务需要xxx是什么企图。
折腾了一段时间,不明白为什么会出现这个,但是整理出了一个临时的解决方案:
右键UWP的启动项目中的Package.appxmanifest文件,选择查看代码,然后在
<Package></Package>
代码段内的末尾添加如下内容:
<Extensions> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path>CLRHost.dll</Path> <ActivatableClass ActivatableClassId="Microsoft.UI.Xaml.Markup.ReflectionXamlMetadataProvider" ThreadingModel="both" /> </InProcessServer> </Extension> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path>{your background task file name}.winmd</Path> <ActivatableClass ActivatableClassId="{your background task class full name}" ThreadingModel="both" /> </InProcessServer> </Extension> </Extensions>
这时候整个文档的结构应该是这样婶儿的:
<Package> <Identity /> <!-- ...... --> <Applications> <!-- ...... --> </Applications> <Capabilities> <!-- ...... --> </Capabilities> <!-- 刚加的部分 --> <Extensions> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path>CLRHost.dll</Path> <ActivatableClass ActivatableClassId="Microsoft.UI.Xaml.Markup.ReflectionXamlMetadataProvider" ThreadingModel="both" /> </InProcessServer> </Extension> <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path>BgTest.BackgroundTask.winmd</Path> <ActivatableClass ActivatableClassId="BgTest.BackgroundTask.ToastTask" ThreadingModel="both" /> </InProcessServer> </Extension> </Extensions> <!-- 刚加的部分结束 --> </Package>
中间{}内的部分替换成你项目中的真实名称,比如我的测试项目是这样的:
<InProcessServer> <Path>BgTest.BackgroundTask.winmd</Path> <ActivatableClass ActivatableClassId="BgTest.BackgroundTask.ToastTask" ThreadingModel="both" /> </InProcessServer>
然后编译,这时候可以编译通过但是后台任务是无法触发的。下一步就比较重要了:把你刚刚加上的那段删掉。
嗝。
然后就正常了。不知道微软这是什么神操作。
这件事教会我们一个道理,能用进程内后台任务不用进程外后台任务,用新不用旧。
沙雕微软。
以上所述就是小编给大家介绍的《Windows10 SDK 17763中进程外后台任务编译失败的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 仿有赞后台+vue+ts+vuecli3.0+elementUi+四期vueX的使用+图片上传+富文本编译器
- 飞特后台管理系统 3.0:不仅仅是后台,还有商城模块
- Linux 后台运行任务 nohup 结合 & 用法以及如何精准查找进程并 kill 后台任务实践
- Xcode 编译疾如风系列(二):并行编译
- TIMO 后台管理系统 v2.0 发布,带来全新的项目结构,支持前后台模块分离部署!
- 编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。