我认为这是因为您遇到了当前调试器类型无法捕获的本机异常。在 c# 和 winjs 等经典 windows phone 项目中,我们可以将调试器类型设置为同时支持托管和原生。如果您可以通过启用本机调试器获得更多信息,我认为值得一试。
默认情况下,对于 Cordova 项目,默认调试器类型为仅脚本。我们可以通过启用Diagnostic build log找到它:Tools->Options->Projects and Solutions ->将“MSBuild project build output verbosity”改为Diagnostic。
那我们举个例子来说明一下我们能找到什么:
新建一个黑色cordova项目。
将解决方案平台更改为 Windows Phone(通用)并选择“Emulator 8.1 WVGA 4 inch 512MB”。
构建解决方案。然后让我们在输出窗口中检查构建日志。
在输出窗口中搜索“debuggertype”时,我们将能够找到以下信息:
DebuggerFlavor = PhoneEmulator81Wvga4512
DebuggerType = Script
DebugSymbols = false
DebugSymbolsProjectOutputGroupDependsOn =
DefaultContentType = Default
DefaultReferenceGroup = Implicit (Apache Cordova)
DefineCommonReferenceSchemas =
DefineExplicitDefaults = true
我们可以看到 DebuggerType 被设置为 Script。这是从 MSBuild 中的全局设置继承而来的。您还可以从诊断构建输出日志中找到该文件的内容。
然后让我们看看如何更改它以捕获本机异常。转到您的项目文件夹并打开 .jsproj.user 文件。我们可以找到以下设置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
现在,将其更改为以下将更改调试器类型,您可以在构建日志中验证。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerType>Mixed</DebuggerType>
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
然后您可以再次运行您的应用,看看它是否会在您的 Visual Studio 输出窗口中获得任何信息。