У нас была проблема с нашим развернутым приложением, из-за которой клиент не загружал последнюю версию файлов xap, несмотря на то, что они обновлялись на сервере и явно различались как по размеру, так и по дате изменения.Похоже, мы не получаем этого на наших машинах для разработки.
Здесь может происходить нечто подобное.
Мы решили нашу проблему, добавив ?[xap file date]
к ссылке всех файлов xap.Это было как на странице xspx для основного файла xap, так и в базе данных для всех ссылок Prism.Этой фиктивной строки запроса, по-видимому, достаточно, чтобы обмануть браузер, чтобы он рассматривал файл xap как другой и загружал обновленную версию.
Для файла xap, на который есть ссылка на странице aspx, необходимо выполнить действия, описанные в это сообщение в блоге .Основная часть этого кода:
<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 уникальной при каждом обновлении.