TypeScript和Visual Studio 2015断点 - 没有为此文档加载符号

14

我无法在 Visual Studio 中对 TypeScript 文件设置断点。

当我在调试模式下运行代码时,断点会被禁用,并且在悬停在上面时出现以下错误信息:

当前无法命中断点。未为此文档加载符号。

我已经搜索过这个问题并且看到了其他一些类似的 SO 问题,但是我的问题与我发现的任何一个都不同:

  • 这个 建议将一个行从 .csproj 文件移动到另一个位置:我的 .csproj 文件中没有类似的行。我尝试添加它,但是行为没有任何变化。
  • 这个(以及许多其他 SO、GitHub 和其他地方的问题)认为问题在于源映射文件没有生成。我在项目属性中设置了此选项,确保生成了源映射文件,因为如果我在 Chrome 中进行调试,我可以看到它们的存在,所以这也是死路一条。

我在生成输出中没有发现任何异常情况。

如何使 Visual Studio 中的 TypeScript 断点正常工作?

版本信息:

  • VS2015 更新 2
  • Microsoft Visual Studio 版本的 TypeScript 1.8.29.0
  • 在包括 IE11 在内的各种浏览器中尝试过
  • 使用 .Net Framework 4.5.2 的 ASP.NET Web 应用程序

我的选项 > 调试 > 符号设置:

Symbol Settings


如果像@John的答案一样,源映射已经创建但仍然无法触发断点,在我的情况下,重新启动VS可以解决问题。 - yu yang Jian
3个回答

13

首先要做的是确保 TypeScript 构建正在生成源映射。此设置位于项目属性 TypeScriptBuild 设置下(如下所示):

显示了生成源映射设置的 TypeScript 项目属性

其次,请务必选择一个支持的浏览器来调试脚本启动。我知道唯一支持的浏览器是 Internet Explorer 和 Edge - 但有一些注意事项。

  • Internet Explorer: 在启动时,调试器将自动连接到它,但首先您必须在 IE 的高级设置中启用脚本调试。 工具 >> Internet 选项 >> 高级 >> 取消选中“禁用 Internet Explorer 的脚本调试”复选框。
  • Edge: 调试器不会在启动时自动连接到它,但是一旦它启动,您可以手动连接到它(选择脚本引擎)。 如果您在加载页面期间执行的代码中断点,则需要刷新网页以触发断点。

通过检查进程窗口(ctl-alt + z)中的浏览器进程和“调试”列下的脚本,验证调试器实际上已连接到 Web 浏览器。

显示调试器连接到 IIS Express 和 Internet Explorer 的进程窗口

如果在验证调试器已连接到 Web 浏览器后,断点仍然无法绑定到您的 .ts 文件中,请打开 TypeScript 编译器生成的 .js 文件并在那里设置断点。

另一个选择是使用所选浏览器的内置浏览器调试器。有关详细信息,请参见页面。


嗨 John。谢谢你抽出时间来回答我的问题。虽然你的建议可能对其他人有用,但不符合我的具体问题。我已经使用了 Explorer(带有相应的调试设置)和 Edge,但仍然无法加载我的符号。问题是尝试解决这个特定问题,以便能够在 Visual Studio 中进行调试,而不是启用调试选项或使用浏览器自己的 F12 工具。 - Stewart_R
@Stewart_R 我更新了我的答案,涵盖了更多可能导致你描述的问题的设置。希望能有所帮助。 - John
搞定了!它之前没有附加到进程上。我手动“附加到进程”了一次,现在每次按下F5它都会自动执行。不太确定为什么以前没有附加,但很高兴有解决办法了。谢谢!:-) - Stewart_R

2

我最初认为你提供的链接文章只涉及ASP.NET 5 - 我现在看到它还有ASP.NET 4.5部分。然而,这篇文章是围绕着使用angular 2设计的(而我不是)。我尝试了一些似乎与angular 2无关的特定点(在._layout.cshtml文件中的System.config脚本行和最后一步对.csproj文件的修改),但没有成功。我收到了运行时错误:System is not defined。 - Stewart_R
抱歉。您的评论帮助我解决了我的问题,所以我想回报您。您是指它是使用 .Net Framework 4.5.2 的 ASP.NET Web 应用程序,还是带有 TypeScript 的 HTML 应用程序,或者其他什么?项目的确切类型很重要。 - Karl P
这是一个使用 .Net Framework 4.5.2 的 ASP.NET Web 应用程序。不需要道歉 - 我非常感谢任何帮助的努力! - Stewart_R

1

我也遇到了同样的问题,通过将源文件移动到另一个目录来解决。我能够在主要的typescript文件中设置断点,但无法在从属的typescript react文件中设置断点。


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