调试Silverlight应用程序问题

17

我的VS2010不能在Silverlight应用程序中停止断点。调试期间没有为其加载符号。当我悬停在断点上时,它会显示“目前无法命中断点,没有加载符号”。

我尝试了谷歌提供的所有可能的解决方案,但都没有成功。即使我创建由ASP .NET Web项目托管的全新Silverlight应用程序,问题仍然存在。我的所有项目配置看起来都很好-在Web项目中启用了Silverlight调试。

我正在使用Silverlight 4。这是从模板创建的示例项目链接

有什么想法吗?

附言:我刚刚尝试重新安装VS2010,但问题仍然存在。

编辑:我在另一台机器上测试了相同的项目,它可以停在断点处,看起来问题出在VS或Silverlight的配置中。

在Matt Dotson的帮助下,我设法手动附加了调试器。但是,这种解决方案不足以日常使用。

7个回答

28

根据我在Silverlight方面的经验,遵循以下步骤可以使您的项目能够进行调试。

条件1>

首先,我们需要确保Web项目属性中有一个Web部分,如下所示,Silverlight复选框必须被选中。

图片描述

条件2> 跟随菜单Debug => Attach Debugger>

Visual Studio有时无法附加调试平台,你需要自己引路 :).通过这种方式,您可以调试其他平台(也可以调试您的产品平台,但pdb文件必须同步,不要忘记使用此方法暂停您的产品平台)。

图片描述

条件3> 您的默认Web浏览器可能是Firefox、Chrome或IE之外的其他浏览器。Visual Studio默认尝试连接IE。但是当您运行VS时,它会调用默认浏览器,因此您需要在条件2中进行手动连接,或者右键单击默认页面 > Browse with将其设置为默认浏览器。

图片描述

条件4> xap文件通常位于Web项目的ClientBin目录中。有时在Build操作后,该文件无法被替换,并且您的ProjectDll和Project PDB文件不会被同步。这会导致在调试时出现错误行匹配或找不到已附加调试文件的警告。我强烈建议删除Bus项目中生成的所有文件以及Clientbin\ProjectName.xap文件。重建后,一切都应该没问题了!

图片描述

希望有所帮助。


6
你正在使用哪个浏览器?你需要使用Internet Explorer来调试Silverlight项目。

3
不真实,我使用Firefox来调试Sl项目。 - Malcolm
@Malcolm:使用新的Firefox 3.6.4及以上版本,我无法调试任何Silverlight项目。该版本将Silverlight托管在一个特殊的容器中以进行执行。 - Jehof
@Jehof 不知道那个。谢谢你的信息。因为我还在使用 Firefox 3.5。 - Malcolm
2
@Jehof 这里有一个解决方法: http://forums.silverlight.net/forums/t/188434.aspx - Malcolm
1
到目前为止,我已经成功使用FF进行了调试。我在IE和Chrome中也遇到了这个调试问题。 - Koynov
关键是将IE设置为默认浏览器,而不是复制/粘贴链接,只需让VS打开浏览器。 - k-dev

4
我曾经也遇到过类似的问题,非常令人沮丧。但在我的情况下,解决方案非常简单。似乎在托管ASP.NET项目的属性中,Silverlight调试器选项不知何故被取消了勾选。
我只是假设由于之前进行了调试,所以这个选项已经设置好了,因此我没有去确认这一点。这表明我们应该始终首先检查基础知识;如果我当时这样做了,就可以节省一些时间。
在VS2010中,右键单击项目并选择属性,切换到Web选项卡,在调试器部分的底部检查页面中的Silverlight选项即可。

3

如果这不起作用,则可以:

  • 重置IIS(如果您正在其中调试)
  • 删除临时ASP.NET文件(%SystemRoot%\Microsoft.NET\Framework\versionNumber\Temporary ASP.NET Files)
  • 清理并重新构建您的解决方案

我已经做了所有这些 - 没有帮助。 我正在使用VS的开发服务器,所以我没有IIS可以重置。 - Koynov
你是附加到正在运行的Silverlight进程中,还是只是按了F5键? - Matt Dotson
2
尝试按下CTRL+ALT+P,然后附加到包含“SL”的IE进程。 - Matt Dotson
1
Ctrl+Alt+P的功能很好,非常感谢。但这并不是日常使用的最佳解决方案。 - Koynov

2
经过两天的头痛之后,问题终于得到解决。看起来 Malcolm 给出的链接恰好涵盖了我的问题,但我太狭隘了,没有足够注意它,因为当我与应用程序一起运行调试器时,我的默认浏览器是 FF。所以我认为在 FF 启动后,我可以从 IE 或 Chrome 加载页面。

实际上,问题是由于 FF,调试器无法附加到 Silverlight 项目上。当我从 IE 或 Chrome 加载应用程序时,调试器仍未附加。

感谢所有尝试帮助我的人。


谢谢,这对我很有帮助。另外,我还需要重新启动Visual Studio。 - Andrei

0

也可以尝试从浏览器列表菜单中选择Internet Explorer作为您的浏览器


0
如果您有多个项目,请单独重建您想要断点的项目。这对我很有效。

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