找回密码
 立即注册

QQ登录

只需一步,快速开始

thrall

超级版主

14

主题

174

帖子

2044

积分

超级版主

Rank: 8Rank: 8

积分
2044

活字格认证微信认证勋章

thrall
超级版主   /  发表于:2013-5-8 10:17  /   查看:5952  /  回复:0
这次得到了一个做Silverlight应用开发的机会,在发布时遇到 xap 包太大的问题,上网看了半天,最后把微软的这个文档 “如何使用应用程序库缓存” 翻来覆去看了半天,终于搞明白了它说的内容,晕啊,真应了 “会者不难” 这句老话。

最后决定把这个其实很简单的东西总结一下,避免别的新学者浪费时间。   
开发场景:   

Silverlight Application: 与Web交互, 程序集名:SilverlightApplication10.dll   
Silverlight Class Library: 被SilverlightApplication10引用,程序集名:SilverlightClassLibrary1.dll   
目标:   
编译后的ClientBin中,SilverlightApplication10.xap包中不包含SilverlightClassLibrary1.dll, SilverlightClassLibrary1.dll 以SilverlightClassLibrary1.zip新式单独存在。   
OK, 现在说说这核心三部曲:   
1. SilverlighApplication10工程属性里”Silverlight”标签下勾上 “Reduce XAP size by using application library caching”   

2. 在保存SilverlightClassLibrary1.dll的地方增加一个extmap文件” SilverlightClassLibrary1.extmap.xml”   

SilverlightClassLibrary1.extmap.xml 的内容说明
  1. <?xml version="1.0"?>
  2. <manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.           xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  4.   <assembly>
  5.     <name>SilverlightClassLibrary1</name>
  6.     <version>1.0.0.0</version>
  7.     <publickeytoken>ee6c3f173c1a51b5</publickeytoken>
  8.     <relpath>SilverlightClassLibrary1.dll</relpath>
  9.     <extension downloadUri="SilverlightClassLibrary1.zip" />
  10.   </assembly>
  11. </manifest>
复制代码
name: SilverlightClassLibrary1 的程序集名字
version: assembly version.  
publickeytoken: 打上签名后的public key  
没什么太多解释的,微软的文档“如何使用应用程序库缓存” 里说的很清楚了。对于version和publikeytoken如果你拿不准的话,可以用reflector看,简单直接:  
另外,extension downloadUri的内容注意别写错了,是 .zip结尾!我有个配置给copy成.dll了,老不成功,以为还需要设置别的配置,在快把我搞死的时候,才发现这儿写错了,唉......  
3. SilverlightApplication10 不要引用SilverlightClassLibrary1的工程,要直接引用编译好的SilverlightClassLibrary1.dll  
OK,最后结果如图:  
清爽的xap包!把它改名成SilverlightApplication10.zip,打开看看:  
最后,附上我的测试程序供大家参考: SilverlightApplication10.rar ( 19.22 K)

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部