直到几分钟前,我的Silverlight应用程序在Firefox中完美地打破了断点。但是,它现在不仅显示断点不会被命中(轮廓而不是实心断点),基于一些Debug.WriteLine语句,我可以看到我的代码的旧版本正在执行。< / em>的
这里发生了什么?我该如何排除故障并解决此问题?这是一个已知的问题吗?
过去我也让Chrome像这样工作,但它也神秘地停止了打破断点。 (我从未使用attach-to-process手动附加。)
答案 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文件引用都是唯一的。