Visual Studio 2019中JavaScript断点在ASP.NET应用程序中无效

15

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

在VS 2017中,当在本地使用Chrome运行一个asp.net应用程序时,我可以在javascript代码中设置断点,调试器会在断点处停止。但是,在Visual Studio 2019中,这种方法不再起作用。

我需要做什么才能在Visual Studio 2019中启用使用Chrome的javascript调试? 我想在javascript文件中设置断点并使其生效。

以下是我的设置:

  1. 我已启用Javascript调试。 enter image description here

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

enter image description here

  1. 该断点被忽略。Visual Studio非常客气地向我显示了一条工具提示,告诉我此断点将被忽略。

enter image description here


1
如果你使用Chrome或Internet Explorer,我猜它会工作。 - TAHA SULTAN TEMURI
3
@TAHASULTANTEMURI,它不能用,这就是问题所在。我正在使用Chrome浏览器(必须使用Chrome)。 - Tom Regan
1
对我来说解决方案是:https://dev59.com/sXIOtIcB2Jgan1znK5Xm#74474717 - Cilesizzz
请仔细检查您的代码 - 我的解决方案是 js 代码未正确编译/包含。明确一点,.js 文件可以进行调试,但必须找到并编译它们。 - Rob
6个回答

2

它应该在VS2019 + Chrome中工作。(我刚在几台机器上检查了这一点)

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

1.将您的VS2019更新到最新版本16.3.7,将您的Chrome浏览器更新到最新版本78.0.3904.87

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

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

此外,有时我们需要在调试会话成功开始之前等待几秒钟。(我曾经遇到过相同的弹出窗口,然后几秒钟后它消失了,一切正常)

希望对您有所帮助 :)


1
以上的建议似乎都对我不起作用。VS版本为v16.6.4,Chrome版本为v84。已勾选“启用ASP.NET的JavaScript调试”。我的JS代码在CSHTML文件中。在VS中我收到了类似的消息:“当前断点将不会被命中。没有与此行相关联的调试器目标代码类型的可执行代码。”尝试过删除_bin_和_obj_文件夹。同时也确认了正确的启动项目。有人成功解决这个问题吗? - Cardi DeMonaco Jr
2
Cardi DeMonaco,我发现当.js文件中的断点被忽略时,我必须关闭VS,删除解决方案的bin和obj文件夹,重新打开解决方案并重新构建所有内容,然后启动调试器,重新访问相关页面并使用Ctrl-F5重新加载javascript。当我按照这些步骤操作时,通常会再次找到断点。但是我不知道在cshtml文件中设置断点是否可行。 - Tom Regan
1
@CardiDeMonacoJr - 对我来说,Edge也有同样的问题,只是信息略有不同。它不是说“断点已设置但尚未绑定”,而是说“未绑定断点”。 - Kyle Delaney
到目前为止,没有任何工具可以帮助我。我正在使用Internet Explorer和Chrome与ASP.NET网站及VS 2019一起使用。请参考此链接:https://stackoverflow.com/questions/66609043/debug-javascript-files-associated-with-the-respected-ascx-in-vs-2017-2019。希望能得到您的帮助。 - tRuEsAtM
目前正在开发一个半成品的VS版本,似乎还没有解决这个问题的方法。再次对Microsoft Visual Studio感到非常失望。我尝试了所有建议的方法,但什么都不起作用,这个问题还没有希望。 - allan
显示剩余2条评论

1

对我来说,好用的旧控制台日志(console.log)胜过上面提到的任何答案。不管怎样,尽管VS令人沮丧,但这就是它的样子,没有什么新鲜事。


1
如果您的JavaScript代码在Razor文件中,它将无法正常工作。
我一直为此苦苦挣扎,并通过使用console.log来解决问题。但是现在,我将js代码移到外部文件中,终于实现了预期效果。
我正在一个 .Net 5项目中使用最新版本的VS 16.11.5和Chrome,并使用Razor页面。

我注意到在我的原始帖子中,我的JavaScript在*.js文件中,而不是Razor视图中,但问题仍然存在。 - Tom Regan

1
如果您的页面包含Razor语法,断点将不起作用。
相反,将debugger;语句添加到脚本中作为断点。
然后,debugger语句在今年早些时候已经无法工作。它仅在顶层工作,即在页面完全呈现之前。如果我将debugger语句放入$(document).ready()中,它将无法工作。
因此,我的解决方法是将我的javascript放在一个没有任何Razor语法的单独的.js文件中。

1

如果在使用Ligershark WebOptimizer的.Net Core中,您需要在startup.cs中关闭开发模式下的代码压缩。例如:services.AddWebOptimizer(minifyJavaScript: false, minifyCss: false); - Norbert Norbertson

0
我注意到,如果我以以下方式在Javascript中打开一个URL:

window.open("url");

它在一个新的标签页中打开,并且加载到新浏览器窗口的JavaScript代码不会触发断点。"debugger"也无法使用。然而,如果你不在新的标签页中打开,而是使用以下代码:
window.open("url", "_self");
它会在同一个窗口中打开,并且断点将会生效。我认为这与浏览器在新标签页中的执行上下文有关。希望这能帮到你。

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