我刚刚安装了 VS 2010 Beta 2,想玩一下 ASP.NET MVC 2 项目。我只是添加了一些脚本(alert('hello');)进入 Home 控制器的 index.aspx 视图,我可以看到它正在执行。然而,当我尝试设置断点时,它永远不会被击中。我还尝试使用“调试器”关键字,当我这样做时,我收到令人失望的“当前位置没有可用的源代码”消息。当我尝试独立附加到运行我的应用程序的 IE 进程时,我也会收到此消息。

我需要做什么才能获得友好的脚本调试体验?(我已经成功地使用 Firebug 来调试它,但出于某种原因我更喜欢 VS 调试器。)

以下是我的配置的一些详细信息:

  • 我正在 VS 2010 Beta 2 中发布我的东西。
  • IE8版本8.0.7600.16385是我的默认浏览器。
  • 未选中“禁用脚本调试 (Internet Explorer)”高级选项。
  • 未选中“禁用脚本调试(其他)”选项。
  • 在我的 ASP.NET MVC 2 项目的“web”属性选项卡中,选中了 ASP.NET 调试器。所有其他均未选中。
  • Visual Studio 2008 脚本调试似乎工作得很好。
有帮助吗?

解决方案

如果选择 Silverlight 调试器,则调试器无法同时调试 Silverlight 代码和脚本代码,并且 JavaScript 调试将关闭。

  1. 转到项目的属性(Alt+Enter)。
  2. 对于网站项目:选择“启动选项”。或者对于 Web 应用程序:转到“Web”选项卡,在底部您将看到“调试器”选项。
  3. 如果您希望能够调试 JavaScript,请检查 Silverlight 复选框是否未选中。(不幸的是,这里的 UI 并不清楚这个副作用。)

其他提示

我也遇到了同样的问题。我无法让 IDE 在脚本标记内设置的断点处中断。但是,当我添加“调试器”时;由于脚本标签中的第一行能够使IDE做出响应,但随后只说灾难性无法利用。

但是,我可以单击“步入”和“跳过”等调试工具。当我这样做时,IDE 确实进入了我正在使用的一些外部脚本(JQuery 和 Google 地图)。因此,我将 JavaScript 代码块从视图中取出,并将其放入“Content”文件夹中的单独 .js 文件中。然后我添加了一个脚本标记来引用这个新的 .js 文件(url =“/Content/Test.js”)。

有效...你必须完成这项工作有点麻烦,但也许 JavaScript 不直接包含在视图中是有道理的。我希望这是他们打算修复的错误。

在 IE 上调试时,VS 似乎在解决方案资源管理器中添加了一个名为“Script Documents”的文件夹。在这个文件夹中还有另一个名为“Windows Internet Explorer”的文件夹,在其中我可以看到所有已加载的 js 脚本和当前在 IE 上显示的(已编译的)HTML 文件。在此 HTML 文件中的脚本标记上设置断点对我来说确实有效。

要解决此问题,请转到项目的属性并选择“启动选项”。然后选中本机代码复选框。并取消选中 Silverlight 复选框,因为这两个选项不能一起使用。

CTRL+Alt+P(附加到进程),选择 IE,选择“脚本”作为调试类型。

正如 Ryan 上面指出的,我将脚本移至 Scripts 文件夹下的单独文件中。我还在脚本的名称中添加了 debug,因此它变成了 MyTestScript。调试.js。我通过脚本标记包含了脚本,并且可以在调试器命中的脚本文件中设置断点。

我发现 Google Chrome 开发者工具完美地显示了 JavaScript。就我而言,我通常使用 jQuery 的 getScript 函数加载脚本,并且通常通过加载页面或处理事件时的 jQuery 回调来执行代码。使用 Visual Studio 2010,我经常遇到“无源”错误。遗憾的是,我需要 Chrome 来调试属于我的 Visual Studio 项目一部分的 JavaScript。

使用单独的 js 文件有其缺点。例如,您不能使用 MVC 助手。微软确实需要解决这个问题。

即使您包含如下参考注释,智能感知也无法在视图的脚本块中正常工作:

/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />

不过,使用这种方法,智能感知在 js 文件中工作得很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top