直到今天。才知道。原理可以在VS里面调JS。我晕。
|
1.在开始部署应用程序时,应该在IDE内部将构建类型设置为 "Release" 。该设置告诉编译器,以Release模式来构建Silverlight程序集。
|
对Release模式所作的设置真正起什么作用,取决于相应的编译器。例如,C#编译器可能会执行与VB.NET编译器不同的编译动作。
|
如果编译器看到已经设置了Release的类型,
|
虽然经常可以注意到,Release程序集的大小要比Debug程序集要小(虽然优化不只是关系到程序集大小),但是此优化过程中实际发生了什么,实在没有必要在这里讨论。
|
在调试时符号文件用处很大,但是在托管的环境中它们的地位有些降低,因为现在可以使用反射来找到某些信息,这些信息在非托管的应用程序中通常是无法访问的。
|
3.在.NET中,描述类、方法和类型(等)的元数据存储在它们所描述的程序集内部。由于元数据和元数据所描述的实际结构保存在一起,因此可以确定它们是同步的。
|
正如前面所描述的,在托管的环境中,通过检索元数据没有存储的信息,例如代码行号和路径,符号仍然维护了某些值。
|
此快照被称为内存转储,而符号文件允许在故障点深入查看应用程序。
|
这就意味着,有时候可能需要把一些脚本调试作为故障排查过程的一部分。
|
|
但是有几点要注意。首先,不能在同一调试过程中调试托管代码和脚本。(即XAML。cs 和JAVASCRIPT)
|
然而,如果在脚本中也设置了断点,那么在 "Silverlight" 调试打开时,脚本中的断点将不能起作用。
|
|
(点击查看大图)图15-3
(2) 下一步是确认浏览器已配置为允许脚本调试。在Internet Explorer情况下,启动浏览器并打开Tools(工具)选项卡,然后进入 "Internet Options" (Internet 选项)对话框。
|
如图15-4所示。
|
|
|
但是,有时您可能会在整个部署过程中移动应用程序,将应用程序放到一个UAT或Staging环境中。
|
<SPAN style= "BACKGROUND-COLOR: #ffff00" >也不是总会在调试环境下遇到问题,而且有时候可能足够幸运可以重现此问题,而不需要通过按下[F5]键来执行应用程序,在此情况下,将Visual Studio绑定到现有的浏览器进程中可能就更为方便。
</SPAN>
|
<SPAN style= "BACKGROUND-COLOR: #ffff00" >这将给出运行在该系统上的进程列表。有可能您是在自己的用户账户语境中执行浏览器,但是如果不是这样,必须确保选中了 "Show processes from all users" 和 "Show processes from all sessions" 选项,以便能发现需要调试的进程。
</SPAN>
|
此节讨论了开始调试应用程序时需要采取的一些步骤。如果在Visual Studio中调试过其他类型的应用程序,将对此比较熟悉。下面要讨论的几个工具可能就不那么熟悉了。这些工具不是微软公司的产品,但是是开发的基本工具,对Web开发而言尤其如此。
解决Silverlight无法调试的问题
<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >在Silverlight开发过程中,经常时不时的会碰到Silverlight无法调试的问题。我就遇到下面几种情况:
1. Web Application+Silverlight,F5进入调试状态之后无法跟进Silverlight程序中下的断点
|
<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >那么启动的时候会提示“Unable to start debugging. Cannot locate Microsoft Internet Explorer”。如果你是直接Ctrl+F5运行,有时候也会出现一样的问题。
</SPAN>
|
|
|
单个Silverlight工程无法调试
|
|
|
确认最后一项“Silverlight”之前的勾<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >是勾上</SPAN>的。
2. <SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >确保浏览器访问的Xap包是最新的。</SPAN><SPAN style= "COLOR: #ff0000" >检查IE是否已经清除了缓存,或者ClientBin中的Xap因为某些原因没能更新(如因配置管理导致无法覆盖)
</SPAN>
|
3. 检查Asp.Net工程是<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >否绑定了Silverlight应用</SPAN>。可以通<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >过asp.net工程的属性面板中的Silverlight Application页卡查看是否绑定成功</SPAN>。如下:
|
|
|
4. 检查<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >Silverlight工程的StartupObject是否设置正确。有时候我们对工程的命名空间进行重命名,会导致Silverlight应用程序的入口对象失效,从而导致无法启动等情况。</SPAN>
|
|
|
<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >如果我们需要在多个标签页(或者多个窗口)中同时调试不同的Silverlight应用程序,那么我们必须自己手动Attach这些进程。</SPAN>
|
为了Attach相应的进程,首先我们<SPAN style= "COLOR: #ff0000" >需要找到SilverlightApplication2承载页面对应的进程。打开ProcessExplorer,我们可以看到三个进程。</SPAN>
|
|
|
|
|
因此在脚本调试下,我们无法跟进Silverlight应用程序的断点。
|
这里额外说一点,<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >IE8高级选项中的禁用脚本调试设置对Visual Studio一点影响都没有</SPAN>
|
<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >除非在Web Application属性中打开了Silverlight调试。</SPAN>
|
|
|
|
|
<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >调试时无法打开IE窗口的问题
</SPAN>这个问题是我最近才遇到的,我也不知道为什么突然之间,我的Silverlight工程按下F5的时候无法调试,
|
弹出下面这个对话框:Unable to start debugging. Cannot locate Microsoft Internet Explorer.
|
|
这个问题折腾了我半天,我尝试了重启电脑,重装Silverlight Tools,新建干净的测试工程,修改系统和
|
话说回来,我最后是怎么解决这个问题的呢,
|
是用了<SPAN style= "COLOR: #ff0000; FONT-SIZE: 16px" >Process Monitor</SPAN>这个小工具(微软Sysinternal荣誉出品!)。
|
后来使用这个工具监视了一下WebDevServ.exe进程之后发现该进程尝试去访问某个不存在的文件。
|
我打开这个工具,选择监视进程为devenv.exe。在Visual Studio中F5开始调试,立即弹出出错对话框,OK,把PM暂停一下,否则条目太多了。
|
|
但是事件条目还是太多了,所以我把Result为SUCCESS的条目过滤掉,因为我们只关注那些失败的条目。
|
然后对日志条目进行细致的排查,终于发现了问题根源:
|
|
KLM\Software\Microsoft\Windows\CurrentVersion\App Paths\iexplore.exe项,
|
|
|
本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。