调试Silverlight没有遇到断点

时间:2010-12-29 18:57:17

标签: silverlight viewmodel

我正在尝试为学校项目开发Silverlight应用程序。

但我遇到Visual Studio没有加载断点的问题,因此很难使用ViewModels调试Silverlight应用程序。

我尝试在“项目属性”下添加“Silverlight” - > “网络” - > “Silverlight”,但这没有做任何事。

这很奇怪,因为它有效。我尝试过使用Chrome,Firefox和Internet Explorer。并使用Silverlight 4和3。

有人知道解决方案吗?

7 个答案:

答案 0 :(得分:6)

我发现如果您将默认浏览器设置为IE(我只使用了Silverlight的IE8)会有所帮助。这样,当您按F5时,Visual Studio似乎能够将调试器连接到Silverlight插件。然后,您应该能够使用VS调试器。

我当然难以尝试使用Firefox调试Silverlight应用程序。 Firefox在一个单独的进程中运行插件(包括Silverlight插件),我认为VS并不聪明,因为他们意识到Silverlight在它启动的过程中没有运行。您可以手动将VS调试器附加到插件容器进程,但是(如果我的内存正确地为我服务),我没有发现它总是可靠的。在将我的机器的默认浏览器切换到IE后,我确实发现调试更加可靠。

另外,在您对Detroitpro的回答的评论中,您写了

  

它告诉我在连接浏览器之前没有加载任何符号,所以我不认为那是[...]

如果您在浏览器中启动Silverlight应用程序之前放置了断点,那么您可能会得到一个“没有加载符号”的信息。信息。当您开始调试时,Visual Studio将启动ASP.NET开发服务器,以提供包含您的Silverlight应用程序的HTML页面,如果没有更多。没有符号'消息意味着VS无法找到将断点放入其调试器所连接的任何进程中的类。 (此时,VS调试器附加的唯一进程是ASP.NET dev服务器。)打开浏览器以查看包含Silverlight应用程序的页面,并将VS调试器连接到运行Silverlight插件的进程,它应该摆脱“没有符号”#39;消息。

最后,另一种判断VS调试器是否已连接到运行代码的进程的方法是调出模块窗口(Debug> Windows> Modules)。如果您的应用的DLL不在模块列表中,那么您将获得“未加载任何符号”的信息。如果您尝试在应用程序的代码中添加断点,则会显示错误消息。

答案 1 :(得分:3)

你必须将Firefox的插件容器附加到调试过程, 因为Firefox不再在主进程中运行任何插件。

转到调试 - >附加到流程... - >搜索Plugin-Container并点击Attach按钮。

现在调试应该再次运行。

答案 2 :(得分:2)

以下是使用Internet Explorer 9的功能

  1. 使用Ctrl-F5启动项目。

  2. 使用调试菜单附加到浏览器进程。

  3. 停止该项目。

  4. 使用F5运行项目。

答案 3 :(得分:1)

当调试在Firefox中无效时,这个解决方案对我有用:

  1. 在Firefox的地址栏中输入“about:config”
  2. 找到名为“dom.ipc.plugins.enabled”
  3. 的媒体资源
  4. 双击
  5. 将值从true更改为false
  6. 重新启动所有Firefox浏览器
  7. 返回Visual Studio并开始调试!

答案 4 :(得分:0)

几个星期前我遇到了这个样本问题;那时我才知道Firefox和Chrome都有错误导致他们无法调试silverlight。此外,请确保您使用的是较新版本的IE。有一些IE的随机中间版本也无法正确加载。

答案 5 :(得分:0)

点击debug->例外并检查.net例外附近的抛出复选框。

答案 6 :(得分:0)

作为上述答案的补充,我发现您可以通过右键单击项目并转到“属性”来启动浏览器之外的应用程序。然后在Silverlight选项卡中选择勾选框并在浏览器中启用正在运行的应用程序'。它现在应该可以达到您设置的断点,而无需更改默认浏览器或附加到特定流程。