用Prism构建的Silverlight应用往往有很多模块(Module),每一个模块可以是一个XAP,也可以所有模块是一个XAP,具体拆分方法见MSDN这个帖子。我们来看看编译以后的在ClientBin目录下的XAP文件,也就是要下载到客户端的文件,用WinRAR或者7z等任意压缩文件打开这个XAP文件可以看到:
有时候你甚至还可以看到你项目中的ReadMe.txt文件居然也在里面!好,现在就来给XAP文件瘦身,减小他的大小:
1. 把所有System.Windows.****.dll的属性CopyLocal=False,前提是这个dll已经在Shell中添加了引用,否则的话就会运行时报错啦。
2. 把所有的Images/*图片文件的属性BuildAction=None,还要写一个PostBuild脚本自动把图片文件复制到Web项目路径,具体实现方法在我的上一篇博文中已经详细描述了。这样你的图片就不会出现在XAP文件中,也不会以内嵌资源打包到assembly中。注意在Xaml中图片引用路径不能再用资源的方式了。参考我的上一篇博文。
3. 把所有的Readme.txt等你不希望放到XAP文件的东东的属性BuildAction=None
4. 使用类库缓存,具体参考MSDN这个帖子。
完。