【问题标题】:UWP App with BackgroundTask won't build anymore Error 80080204带有 BackgroundTask 的 UWP 应用程序将不再构建错误 80080204
【发布时间】:2019-10-28 15:20:39
【问题描述】:

我有一个现在似乎无法构建的 UWP 应用。奇怪的是我有另一个与之非常相似的项目,但它构建得很好。后台任务不是音频背景任务。是什么原因突然造成的?

验证错误。错误 80080204:应用清单验证错误:行 43,第12栏,原因:如果不是音频后台任务,那就是 不允许有 EntryPoint="App.TokenRefreshBackgroundTask" 没有 ActivatableClassId windows.activatableClass.inProcessServer.

目标构建 18362。

【问题讨论】:

  • 在17763等低版本下能否成功构建项目?如果可能,请提供minimal reproducible example?
  • 太奇怪了。更改后台任务项目上的 EntryPoint 文本/值和匹配详细信息允许它针对某些值进行构建,并因不同值的错误而失败。
  • 你的意思是找到问题点了吗? EntryPoint 文本/值不匹配
  • 没有。还是有什么不对劲的地方。我至少知道EntryPoint 的不同值会产生错误。我也会尝试将目标更改为 17763。
  • 您能否为我们分享一个简单的复制示例,以便我可以快速找到问题点?

标签: c# visual-studio uwp


【解决方案1】:

更新

事实证明,这种行为是设计使然。平台不支持“异步”后台任务。

--

为了完整起见,旧答案

事实证明,这是在打包构建期间如何生成 AppxManifest 的一个错误。 我已经提交了一个错误来解决这个问题,一旦我有关于它的可用性的更新,我会更新这个线程和开发者社区票。

目前,您可以通过手动将 inProcServer 条目指定为全局扩展来解决此问题,如下所示:

<Extensions>
  <Extension Category="windows.activatableClass.inProcessServer">
   <InProcessServer>
    <Path>CLRHost.dll</Path>
    <ActivatableClass ActivatableClassId="App.TokenRefreshBackgroundTask" ThreadingModel="both" />
   </InProcessServer>
  </Extension> 
</Extensions>

其中 ActivatableClassId 必须与 backgroundTasks 扩展的入口点匹配。

注意,这与“应用程序”节点下的“扩展”块不同。这个作为“应用程序”和“功能”节点的对等节点存在于“包”级别。

【讨论】:

  • 有趣的是,删除async 可以解决这个问题。感谢您提供更正确的解决方法。期待修复!
  • 我想知道为什么Microsoft's example 说它可以是async。也许它已经过时了?
  • 我同意@skst,在许多情况下运行异步后台任务几乎是必不可少的,根据文档应该允许。有没有办法避免这种情况?我很想知道你是从哪里得到这些信息的,因为这听起来根本不正确
【解决方案2】:

public void Run(IBackgroundTaskInstance taskInstance) 这一行不能是async

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.ApplicationModel.Background;

namespace BackgroundTask
{
    public sealed class TokenRefreshBackgroundTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            throw new NotImplementedException();
        }
    }
}

【讨论】:

  • FWIW,Microsoft documentation 说它可以是 async。也许它已经过时了?
  • 那么为什么这工作了多年,现在突然不支持了?我想知道我应该回滚到哪个版本
【解决方案3】:

当我忘记将实现 IBackgroundTask 类的 RunTimeComponent 项目添加为 UWP 项目中的引用时,我也遇到了这个错误。

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 2012-06-19
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2013-10-21
    相关资源
    最近更新 更多