Visual Studio 2013 无法在 cshtml 中调试 javascript
Posted
技术标签:
【中文标题】Visual Studio 2013 无法在 cshtml 中调试 javascript【英文标题】:Visual Studio 2013 can't debug javascript in cshtml 【发布时间】:2014-01-15 11:13:37 【问题描述】:我有一个使用 Visual Studio 2013 创建的 ASP.NET Web 应用程序。我正在尝试在 CShtml 文件中调试 javascript。但是,每当我启动网页时,任何断点都会变成一个红色圆圈箭头并指出“当前不会命中断点。调试器的目标代码类型的可执行代码与此行没有关联。可能的原因包括:条件编译,编译器优化,或者当前调试器代码类型不支持此行的目标架构。”
最近项目切换到支持MVC和RAZR,这两个我都不了解,正好是这个问题开始的时候。但是,搜索这些结果并不能解决我的问题。
Web.config:
<compilation debug="true"...>
我知道我可以使用 Firebug 或其他浏览器工具调试 JavaScript,但我更愿意坚持使用 Visual Studio 的调试,因为这是我习惯的。
【问题讨论】:
您是否在开始调试后编辑了视图或添加了断点?尝试停止调试会话,如果视图有未完成的更改,请保存视图,确保断点到位 - 然后再次启动调试会话。 不,我没有。这发生在我拥有的每个断点上,甚至还有一个用于几个新的调试会话。 @pwdst 还有其他想法吗?你知道是否可以在 Visual Studio 中调试 JavaScript 吗? 计算机上安装了哪个版本的 Internet Explorer?我相信 Visual Studio 2013 使用 Internet Explorer 11 中的 Trident 引擎进行调试 - 所以需要安装它(它应该使用 Visual Studio 安装升级,但您或管理员可能因为公司政策原因而降级)。还要确保不要在 Internet Explorer 中尝试和调试(通过各种方式进行检查,但不要调试),因为每个人都会尝试将调试器附加到同一进程。 IE 版本为 11.0.9600。我知道不能同时从 IE 进行调试,尽管承认只是因为它警告我已经附加了另一个调试器。我通过 cshtml 文件中的 【参考方案1】:我不知道您的具体问题是什么,但是如果您想强制调试断点始终发生,请将debugger;
添加到您希望它停止的行中,它将停止。这与 JS 的位置无关(在 .js 文件、.html、cshtml 等中)
这是一篇关于它的博文:
http://sumitmaitra.wordpress.com/2013/12/11/quickbytes-visual-studio-2013-and-javascript-debugging/
我也同意 JS 应该放在 .js 文件中(我从来没有遇到过在 .js 文件中添加断点的问题),但对于快速原型制作,这是一个您可以使用的解决方案。
如果还是不行,你可以随时使用 F12 工具
【讨论】:
不,即使使用debugger;
也不会停止。一旦我运行该应用程序,调试断点就会变为一个红色箭头,并在上面圈出一个工具提示。它也可以很好地跳过断点(即,我从网页调用具有断点的函数,并且它们可以在断点处停止工作)。我已将 javascript 分离到一个单独的文件中,并且相同的行为仍然存在。
这很奇怪。您是否尝试过附加 F12 工具的调试器以查看它是否会中断?如果它没有在 F12 工具中中断,那么我会怀疑浏览器可能有问题?
尝试附加 F12 工具的调试器会抛出错误:脚本调试器无法连接到目标进程。已附加调试器。
好的,启动没有附加调试器的 Web 应用程序 (ctrl+F5),然后尝试附加 F12 工具
浏览器可能正在缓存 JS。如果您更改任何内容,请确保您使用 Ctrl+F5。添加显式 debugger;
行不会添加红色圆圈断点,但它应该强制 VS 中断,或者 IE 调试器会。【参考方案2】:
因此,显然这是一个“已知问题”,将尽快修复。适用于“某些”人的临时解决方法是确保任何 Javascript 都在单独的文件中。
这是由于 RAZR 和 Javascript 在同一个文件中,并且 Visual Studio 2013 无法在该实例中处理调试。
【讨论】:
你能分享任何关于这是一个已知问题的参考吗? 我会看看我能做什么,因为它是电子邮件支持。我已经向他们发送了一封电子邮件,要求提供参考资料。 这可能节省了我多年的谷歌搜索。与有关的帖子相比,这样的帖子应该获得更多的投票 - 使用字符串的最佳方式是什么。 这里是提交给 miscrosoft connect.microsoft.com/VisualStudio/feedback/details/807088/…的错误报告 如果我在 .cshtml javascript 中粘贴“调试器”语句,调试器会在该点中断,然后我可以单步执行代码,甚至可以用鼠标添加额外的断点。 【参考方案3】:我将我的 javascript 放在一个单独的文件中并使用 IE 进行调试,否则它将无法正常工作。
由于某种原因,chrome 不允许您进入 javascript。
【讨论】:
【参考方案4】:还有一件事要检查。如果你有一个 App_Start|BundleConfig.cs(随 MVC 4 或 3 一起提供),将 BundleTable.EnableOptimizations 设置为 false(或者,像我一样,将它包装在 #if !DEBUG #endif 中并采用默认设置) .
【讨论】:
花了我一个小时才弄清楚这是手头的问题。【参考方案5】:允许从 Visual Studio 调试 javascript 文件的唯一浏览器是 Internet Explorer。 (这是我在不同浏览器上测试我的应用程序后发现的)
【讨论】:
这是为什么呢?我看到很多帖子都这么说,但没有解释为什么...... 我真的不知道。可能是因为:Internet Explorer 是 Microsoft 制造的。 Visual Studio 也是微软制造的。我没有更好的主意:( 自 VS 2015 年左右以来这不是已经过时了吗?【参考方案6】:我尝试使用 Chrome 和 IE 并最终失败,最终在 Firefox 中使用 Firebug 插件,我能够在我的 JS 中调试和设置断点没有问题(在 Visual Studio 2015 上的 MVC6 应用程序中,这是显然还是个问题?!)...
仅供参考 - 当我尝试使用 F12 开发人员工具在 Chrome 中调试我的 JS 时,它告诉我这不是一个选项,因为调试器已经附加到另一个进程...
【讨论】:
【参考方案7】:对于 2017 年来到这里的人,我想与 VS2017 Enterprise RC 和 VS 2015 社区 分享 我遇到了同样的问题 > 使用除 Internet Explorer 之外的任何浏览器。使用 IE 对我有用。
另外,在 VS2017 中,我必须添加一个 debugger
声明让 VS 开始查看调试点。
最后,我想至少请投反对票的人发表评论。
【讨论】:
VS 2017 不希望在 .cshtml 文件中的 JS 断点上停止,无论浏览器如何。将代码移到JS文件中,一切正常。以上是关于Visual Studio 2013 无法在 cshtml 中调试 javascript的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 未生成 SharePoint 2010 WebPart .g.cs 文件
无法在 Visual Studio 2013 中运行单元测试
在visual studio里面,如何能让我看到.CS文件?