我刚刚安装了VS 2010 Beta 2,并希望使用ASP.NET MVC 2项目。我只是将一些脚本(alert('hello');
)添加到Home控制器的index.aspx视图中,我可以看到它正在执行。但是,当我尝试设置断点时,它永远不会被击中。我也尝试使用“debugger”关键字,当我这样做时,我感到很失望“没有可用于当前位置的源代码”消息。当我尝试独立地连接到运行我的应用程序的IE进程时,我也收到此消息。
我需要做些什么才能获得友好的脚本调试体验? (我已成功使用Firebug来调试它,但由于某种原因,我更喜欢VS调试器。)
以下是我配置的一些细节:
答案 0 :(得分:30)
如果选择了Silverlight调试器,则调试器无法同时调试Silverlight代码和脚本代码。
答案 1 :(得分:7)
我遇到了同样的问题。我无法让IDE甚至在脚本标记内设置的断点处中断。但是当我添加“调试器”时因为脚本标记中的第一行能够让IDE响应,但后来只能说反汇编是不可用的。
然而,我能够点击“步入”和“跳过”之类的调试工具。当我这样做时,IDE确实进入了我正在使用的一些外部脚本(JQuery和Google Maps)。因此,我将JavaScript代码块从视图中取出,并将其放入“Content”文件夹中的单独.js文件中。然后我添加了一个脚本标记来引用这个新的.js文件(url =“/ Content / Test.js”)。
它有点麻烦,你必须经历这个努力,但也许有一些事情要说JavaScript不直接包含在视图中。我希望这是他们打算修复的错误。
答案 2 :(得分:4)
在IE上调试时,VS似乎在解决方案资源管理器中添加了一个名为“脚本文档”的文件夹。在这个文件夹中有另一个名为“Windows Internet Explorer”的文件夹,在其中我看到所有加载的js脚本和当前在IE上显示的(已编译的)HTML文件。在此HTML文件中的脚本标记上设置断点对我有用。
答案 3 :(得分:2)
要解决此问题,请转到项目的属性,然后选择“开始选项”。然后检查本机代码复选框。并取消选中Silverlight复选框,因为这两个选项不能同时工作。
答案 4 :(得分:1)
CTRL + Alt + P(附加到进程),选择IE,为调试类型选择'script'。
答案 5 :(得分:0)
正如Ryan上面提到的,我将脚本移动到Scripts文件夹下的单独文件中。 我还在脚本的名称中添加了debug,因此它变成了MyTestScript。 debug .js。我通过脚本标记包含脚本,并可以在调试器命中的脚本文件中设置断点。
答案 6 :(得分:0)
我发现Google Chrome开发工具可以完美地显示JavaScript。在我的例子中,我通常使用jQuery的getScript函数加载脚本,并且代码的执行通常是在加载页面或处理事件时通过jQuery回调。使用Visual Studio 2010,我经常遇到“无源”错误。很遗憾,我需要Chrome来调试JavaScript,这是我的Visual Studio项目的一部分。
答案 7 :(得分:0)
使用单独的js文件有其缺点。例如,您不能使用MVC助手。微软真的需要解决这个问题。
即使您包含这样的引用注释,Intellisense也无法在视图的脚本块中正常工作:
/// <reference path="/Scripts/jquery-1.6-vsdoc.js" />
/// <reference path="/Scripts/jquery-1.6.js" />
使用这种方法,智能感知在js文件中运行良好。