在UWP应用中使用Cortana语音命令无法启动后台应用?

3

我目前正在使用C#和xaml在我的UWP应用程序中开发Cortana集成。我已经按照以下文章开始使用Cortana:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn630430.aspx?f=255&MSPPError=-2147217396。我编写了所需的所有代码,可以使用Cortana启动前台应用程序并执行操作。但是,我尝试使用Cortana启动后台应用程序时,应用程序会打开至启动画面,然后崩溃。我按照以下文章使用Cortana启动后台应用程序:https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn974228.aspx。我遵循了Microsoft提供的Cortana语音命令示例以及上述链接,但我仍然无法解决它。是否有其他好文章可以解决此问题,并且在启动后台应用程序时如何调试应用程序,以便我可以在代码中设置断点并找出问题。请有经验的人帮帮我。谢谢。

2个回答

6
您可以通过设置Visual Studio等待您的代码启动来调试Cortana中的后台任务。它将检测到Cortana正在加载您的后台任务,并自动附加:
步骤因项目类型(C#,js或c ++ / cx)而异,但调试的一般步骤是
1.打开启动项目的项目属性(右键单击该项目->属性) 2.转到项目属性的Debug(或调试)部分 3.将“Launch Application”之一设置为“否”(js或c ++应用程序),或者将“不要启动,等待我的代码启动”选中(c#应用程序) 4.开始调试。
您的代码将部署,但VS将等待。然后触发Cortana后台任务,当您的代码触发时,它将自动附加到BackgroundTaskHost.exe。
如果您发现VS从未附加且无法命中断点,则需要调查是否错过了某个步骤:
- 检查要安装的VCD是否具有VoiceCommandService标记的正确条目。目标应与包清单中设置的入口点名称匹配。拼写和大小写很重要。 - 检查包清单以确保入口点是正确的完整命名空间 - 检查您的后台任务是否实际上包含在构建的部署输出中。从主应用程序的启动项目到后台任务添加引用(打开启动项目的引用部分,右键单击,添加引用,并引用后台任务的项目)。这将使VS将项目复制到输出中,以便Cortana可以找到并运行它。
如果它在断点命中后某个时候失败,您可以跟进具体失败的位置,如果没有触发异常,我可能会提出一些建议。

0

从语音命令开始,App.xaml.cs中的"OnLaunched"事件不会触发。

但您可以检查类型为VoiceCommandActivatedEventArgs的参数的OnActivated。

protected override void OnActivated(IActivatedEventArgs args)
    {
        base.OnActivated(args);

        if (args.Kind == ActivationKind.VoiceCommand)
        {
            // Run your OnLunched Stuff
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接