这篇文章是入门的,高手请直接无视。

一、不能调试的解决办法

在VS里,我们一般调试程序都是直接按F5就行的。但Silverlight的程序有时候加不到断点上来。这时候需要检查几个地方。

1. 当前的Build设置的是Release还是Debug?只有Debug模式才可以调试,这在VS的工具栏上可以直接改。

2. 当前Host Silverlight程序的Web Application是否启用了Silverlight Debug?检查项目属性的这个位置。必须勾选Silverlight才能Debug。

3. 你是否为本机管理员?只有管理员帐号才能正确无误的挂载到Silverlight进程上。

二、在非IE浏览器下调试Silverlight程序。

如果我们的默认浏览器是IE,那么按下F5之后,其实VS会自动挂载到IE的进程上。所以才能debug。因此,我们如果换了一个浏览器,VS就不认识该浏览器运行Silverlight的进程,因此不会给我们自动挂载。这时候必须手动去附加进程了。

不同浏览器运行Silverlight的原理不一样,如果你用的是Chrome,那么Silverlight是被host在Chrome进程本身的。如果是Firefox,那就会多一个plugincontainer的容器进程,Firefox会把Flash、Silverlight等三方插件都放在这个容器里跑,以保证网页的稳定和安全。

下面以Chrome浏览器为例。启动Silverlight程序后,你会发现断点是空的,因为VS并没有挂载到执行Silverlight的进程上。

在Debug菜单下选择“Attach To Process”,然后你会发现一坨Chrome.exe进程,我们要挂的是Type为Silverlight的那个。

挂上后,断点就被激活了,并且也可以正确调试了。

还有一点要注意,如果调试的时间比较长,Chrome会以为Silverlight插件死机了,会问你要不要把它X掉,我们要点否。不然Chrome把进程一杀,VS就会自动关闭Debug。然而,火狐浏览器这时候就不会问你,而是忙等一段时间后,自动X掉Silverlight,于是你的Debug就爆了。