在Firefox中调试Silverlight Breaks

时间:2011-08-17 18:15:09

标签: silverlight debugging browser

直到几分钟前,我的Silverlight应用程序在Firefox中完美地打破了断点。但是,它现在不仅显示断点不会被命中(轮廓而不是实心断点),基于一些Debug.WriteLine语句,我可以看到我的代码的旧版本正在执行。< / em>的

这里发生了什么?我该如何排除故障并解决此问题?这是一个已知的问题吗?

过去我也让Chrome像这样工作,但它也神秘地停止了打破断点。 (我从未使用attach-to-process手动附加。)

2 个答案:

答案 0 :(得分:3)

您的浏览器似乎正在使用XAP文件的缓存版本,而不是使用最新编译的XAP。我知道这听起来很简单,但您是否尝试过清除浏览器历史记录?

答案 1 :(得分:0)

我们部署的应用程序存在问题,即客户端没有下载最新版本的xap文件,尽管它们在服务器上进行了更新,并且在大小和修改日期方面明显不同。我们似乎没有在我们的开发机器上获得这个。

类似的东西可能会在这里发生。

我们通过将?[xap file date]附加到所有xap文件的引用来解决了我们的问题。这是在主xap文件的xspx页面和所有Prism引用的数据库中。这个虚拟查询字符串似乎足以欺骗浏览器将xap文件视为不同,因此下载更新后的版本。

对于aspx页面中引用的xap文件,您需要按照this blog post中列出的步骤操作。主要部分是这段代码:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
   <%
       string strSourceFile = @"ClientBin/SilverlightApplication2.xap";
       string param;    
       if (System.Diagnostics.Debugger.IsAttached)
           //Debugger Attached - Refresh the XAP file.
           param = "<param name=\"source\" value=\"" + strSourceFile + "?" + DateTime.Now.Ticks + "\" />";
       else
       {
           //Production Mode 
           param = "<param name=\"source\" value=\"" + strSourceFile + "\" />";
       }
       Response.Write(param);
    %> 
     <param name="onError" value="onSilverlightError" />
     <param name="background" value="white" />
     <param name="minRuntimeVersion" value="4.0.50826.0" />
     <param name="autoUpgrade" value="true" />
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
     </a>
</object>

这样做是找到xap文件的当前时间戳并附加它。生成的代码如下所示:

<param name="source" value="ClientBin/SilverlightApplication2.xap??634299001187160148">

这使得每次更新时xap文件引用都是唯一的。