We had an issue with our deployed application whereby the client wasn't downloading the latest version of the xap files despite them being updated on the server and clearly being different, both in terms of size and date modified. We don't appear to be getting this on our development machines though.
Something similar could be going on here.
We solved our problem by appending ?[xap file date]
to the reference of all xap files. This was in both the xspx page for the main xap file and in the database for all the Prism references. This dummy query string appears to be enough to fool the browser into treating the xap file as different and so downloading the updated version.
For the xap file referenced in the aspx page you need to follow the steps outlined in this blog post. The main part is this code:
<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>
What this does is find the current time stamp of the xap file and append it. The generated code will look something like this:
<param name="source" value="ClientBin/SilverlightApplication2.xap??634299001187160148">
This makes the xap file reference unique for each time it updates.