如果所开发的 silverlight 应用比较大,可以缓存应用的一些相关的库文件,在 silverlight 中支持对库文件的缓存。
启用库文件缓存:
打开项目的“属性”框,在 sliverlight 活页中选中“使用应用程序库缓存减少 XAP 大小”选项,然后引用 silverlight SDK 中自带的程序集,然后在程序集的属性页中把“复制本地”属性值设置为 true,这样在生成项目的时候,程序集不会被打包进 XAP 文件中,而是单独打包成一个 .zip 文件。
上面的操作说引用 silverlight SDK 自带的程序集时才会被打包成 .zip 文件,如果自定义的程序集也需要打包成 zip 文件的话,还需要另外一个操作,就是在程序集所在的位置新创建一个与程序集同名的 .extmap.xml 文件(不需要 DLL 后缀),如为 Hello.dll 创建一个 .extmap.xml 的文件,文件名为 Hello.extmap.xml, 文件的内容如下:
<?xml version="1.0"?>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<assembly>
<name>Hello</name>
<version>1.0.0.0</version>
<!-- 必须指定,不然不会单独打包 -->
<publickeytoken>31bf3856ad364e35</publickeytoken>
<relpath>Hello.dll</relpath>
<!-- 打包的文件名称,如果有多个程序集使用一个名称,则打包的时候会打包成一个 ZIP 文件 -->
<extension downloadUri="Hello.zip" />
</assembly>
</manifest>
<manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<assembly>
<name>Hello</name>
<version>1.0.0.0</version>
<!-- 必须指定,不然不会单独打包 -->
<publickeytoken>31bf3856ad364e35</publickeytoken>
<relpath>Hello.dll</relpath>
<!-- 打包的文件名称,如果有多个程序集使用一个名称,则打包的时候会打包成一个 ZIP 文件 -->
<extension downloadUri="Hello.zip" />
</assembly>
</manifest>
在为 Hello.dll 程序配制好 .extmap.xml 文件后,这样 VS 在生成的时候就会把 Hello.dll 程序单独打包成一个 .zip 文件了。
这里还需要注意的的程序集必须是签过名的程序集,否则也不会打包成 .zip 文件。