Windows10 SDK 17763中进程外后台任务编译失败的问题

栏目: ASP.NET · 发布时间: 6年前

内容简介:今天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中进程外后台任务编译失败的问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ACM国际大学生程序设计竞赛亚洲区预选赛真题题解

ACM国际大学生程序设计竞赛亚洲区预选赛真题题解

郭炜 / 电子工业 / 2011-7 / 49.00元

ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM/ICPC)是世界上历史最悠久,规模最大、最具声望的程序设计竞赛,一直受到众多国际知名大学的重视,全球著名IT公司更是争相招募竞赛的优胜者。 该项赛事分为各大洲预选赛和全球总决赛两个阶段。北京大学多次在亚洲区预选赛中负责命题工作,是中国在ACM/ICPC命......一起来看看 《ACM国际大学生程序设计竞赛亚洲区预选赛真题题解》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具