方法2,动态方式强制更新
所谓动态方式强制更新,其实每次部署时使用不同的XAP文件名,浏览器每次检测到不同的文件名,则将重新下载XAP文件。
这种方式有很多种实现方法,例如,可以手动添加一个XAP文件参数,也可以动态生成一个随机参数,或者根据不同版本号绑定到XAP文件名后等。
在下面实例代码中,根据部署的日期不同,将日期字符串作为XAP文件的参数,以此强制更新XAP文件,
代码修改静态代码”<param name="source" value="ClientBin/SilverlightApp.xap"/>“为动态代码,当项目不是在Debug模式下,则生成新的XAP文件路径。
<
object
id
="Xaml1"
data
="data:application/x-silverlight-2,"
type
="application/x-silverlight-2"
width
="100%"
height
="100%"
>
<% string orgSourceValue = @ " ClientBin/SilverlightApp.xap " ; string param; if (System.Diagnostics.Debugger.IsAttached) param = " <param name=\ " source \ " value=\"" + orgSourceValue + " \ " /> " ; else { string xappath = HttpContext.Current.Server.MapPath(@ "" ) + @ " \ " + orgSourceValue; DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath); param = " <param name=\ " source \ " value=\"" + orgSourceValue + " ?ignore = " + xapCreationDate.ToString() + " \ " /> " ; } Response.Write(param); %> < param name ="onError" value ="onSilverlightError" />
<% string orgSourceValue = @ " ClientBin/SilverlightApp.xap " ; string param; if (System.Diagnostics.Debugger.IsAttached) param = " <param name=\ " source \ " value=\"" + orgSourceValue + " \ " /> " ; else { string xappath = HttpContext.Current.Server.MapPath(@ "" ) + @ " \ " + orgSourceValue; DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath); param = " <param name=\ " source \ " value=\"" + orgSourceValue + " ?ignore = " + xapCreationDate.ToString() + " \ " /> " ; } Response.Write(param); %> < param name ="onError" value ="onSilverlightError" />
方法3, 本地自动生成版本号强制更新XAP文件
该方法由网友”菩提树下的杨过“提出,作者创建简单本地应用,使用本地应用生成不同的XAP文件名参数,其原理与方法2相同,实现方法不同。
详细请看教程 ”Silverlight:xap包(或本地缓存)下载版本更新的解决思路“。