【问题标题】:Javascript breakpoint not work in Visual Studio 2019 asp.net applicationJavascript 断点在 Visual Studio 2019 asp.net 应用程序中不起作用
【发布时间】:2019-11-01 13:55:01
【问题描述】:

我最近从 VS 2017 升级到 VS 2019。

在 VS 2017 中,当使用 Chrome 在本地运行 asp.net 应用程序时,我可以在 javascript 代码中放置一个断点,调试器将在断点处停止。这在 Visual Studio 2019 中不再适用。

我需要做什么才能使用 Chrome 在 Visual Studio 2019 中启用 javascript 调试?我希望能够在 javascript 文件中放置断点并命中它们。

这是我的设置。

  1. 我已启用 Javascript 调试。

  2. 我在我的 Javscript 代码中放置了一个断点。此断点位于 *.js 文件中(不在 Razor 视图中)。

  1. 断点被忽略。 Visual Studio 非常有礼貌地向我显示了一个工具提示,告诉我断点将被忽略。

【问题讨论】:

  • 我想如果你使用 chrome 或 internet explorer 就可以了
  • @TAHASULTANTEMURI 它不起作用,这就是问题所在。我正在使用 Chrome(我必须使用 Chrome)。

标签: javascript visual-studio-debugging visual-studio-2019 chrome-debugging


【解决方案1】:

它应该可以在VS2019+Chrome中运行。(我刚刚在几台机器上检查过)

这不是一个可以直接解决的问题,因为许多因素都会导致这种行为,您可以按照以下建议检查是否有帮助:

1.将你的VS2019更新到最新的16.3.7,将你的chrome浏览器更新到最新的78.0.3904.87

2.删除项目目录中的 bin 和 obj 文件夹 => 然后关闭并重新启动 VS => 打开该项目并进行干净的重建

3.确保您处于调试项目模式,右键单击您的网络项目=>设置为启动项目

另外,有时我们需要等待几秒钟才能成功启动调试会话。(我曾经遇到过同样的弹出窗口,然后几秒钟后它消失了,一切正常)

希望对你有帮助:)

【讨论】:

  • 以上建议似乎都不适合我。 VS 是 v16.6.4。铬是 v84。选中“为 ASP.NET 启用 JavaScript 调试”。我的 JS 在 CSHTML 文件中。我在 VS 中收到类似的消息:“断点当前不会被命中。没有调试器目标代码类型的可执行代码与此行关联。”已尝试删除 binobj 文件夹。也是正确的启动项目。有人成功了吗?
  • 当 JS 代码在 JS 文件中时,调试点保持正常红色(没有警告消息),但从未命中。即使使用简单的警报(“Hello,world!”),我也看到了警报,但没有命中断点。
  • 所以,Edge 似乎工作得很好,但 Chrome 却不行。所以我猜 Edge 是需要 JS 调试的时候。
  • Cardi DeMonaco,我发现当断点在 .js 文件中被忽略时,我必须关闭 VS,删除解决方案的 bin 和 obj 文件夹,重新打开解决方案并重新构建所有文件,然后启动调试器,重新访问有问题的页面并执行 Ctrl-F5 以重新加载 javascript。当我完成这些步骤时,它通常会再次开始寻找断点。不过,我不知道在 cshtml 文件中放置断点。
  • @CardiDeMonacoJr - Edge 对我来说也有同样的问题,但消息略有不同。而不是“断点设置但尚未绑定”它只是说“未绑定断点”
【解决方案2】:

除了在 Visual Studio 中启用 JavaScript 调试外,请确保关闭缩小。 (Turn off bundling/minification while debugging in WebForms)

【讨论】:

  • 如果将 .Net Core 与 Ligershark WebOptimizer 一起使用,您需要在 startup.cs 的开发模式下关闭缩小。例如services.AddWebOptimizer(minifyJavaScript: false, minifyCss: false);
【解决方案3】:

如果您的页面包含 Razor 语法,则断点将不起作用。

而是将debugger; 语句作为断点添加到脚本中。

然后,debugger 声明在今年早些时候未能奏效。它仅在顶层有效,即在页面完全呈现之前。如果我将debugger 语句放入$(document).ready(),它将不起作用

所以我现在的工作是将我的 javascript 放在一个单独的 .js 文件中,而不使用任何 Razor 语法。

【讨论】:

    【解决方案4】:

    旧的 console.log 对我有用,因为上面的答案根本没有任何建议。无论如何,这就是 VS 的挫败感,没什么新鲜的。

    【讨论】:

      【解决方案5】:

      如果您的 Javascript 在 Razor 文件中,它将无法工作。

      多年来,我一直在为此苦苦挣扎,并且使用 console.log。 但是刚才我把 js 移到了一个外部文件中,并且可以正常工作。

      我在带有 Razor 页面的 .Net 5 项目中使用最新的 VS 16.11.5 和 Chrome。

      【讨论】:

      • 我在原始帖子中注意到我的 javascript 在 *.js 文件中,而不是在 Razor 视图中,但问题仍然存在。
      猜你喜欢
      • 2020-05-16
      • 1970-01-01
      • 2020-06-03
      • 2021-06-25
      • 2023-03-12
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多