Silverlight 3 Reduce XAP size by using application library caching 应用, 分包下载(转载)

 

最早使用 IsolatedStorageFile 类缓存 Silverlight 程序. 以便下次打开速度变快.  某天偶尔发现 VS 的 SL 项目属性中. 有此选项.

image , 于是上网找找资料. 做了个例子试试. 结果很明显. 400多k 的 xap 文件 被分离成多个. 最后的 xap 文件只有14k 大小.

 

特将此 demo 的制作过程记录下来, 以备查阅.

 

1. 项目结构如下:

 image

2. 首先编译. 查看生成的 Xap 文件大小. image  452KB.

3. 打开 PEMS.Sl.UI  SL 项目的属性页面. 将image 选中.

4. 编译解决方案. 查看新的结果.

image

生成后. Navigation. Controls. Linq 三个动态链接库被单独打包为 zip格式. 存放与 ClientBin 下. 这样. 客户端在使用到的时候. SL 会为你自动下载.

由于我的 PEMS.Sl.UI 项目使用到了 PEMS.Sl.Controls 与 PEMS.Common.Model 项目. 我也需要让这两个项目变得与 Navigation. Controls. Linq 它们相同. 下面详细说明.

改造 PEMS.Sl.Controls 与 PEMS.Common.Model 项目.

1. 将 PEMS.Sl.Controls 与 PEMS.Common.Model 它们生成为强类型动态链接库.

1. 使用 VS 工具 sn 产生key.

sn –k key.snk

sn –p key.snk key.public.snk

sn –t key.public.snk  查看到的 public token 记下. 稍后有重要作用

2. 在 PEMS.Sl.Controls 项目属性中产生一个key.

image

3. 在 AssemblyInfo.cs 文件中添加 [assembly: AssemblyKeyFile("key.public.snl")]
image 

 

4. 在项目中创建一个 AssemblyName.extmap.xml 文件. 我这里叫做 PEMS.Sl.Controls.extmap.xml

此文件内容为:

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 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 > PEMS.Sl.Controls </ name >
6      < version > 1.0.0.0 </ version >
7      < publickeytoken > 55a4a48c2765ae41 </ publickeytoken >
8      < relpath > PEMS.Sl.Controls.dll </ relpath >
9      < extension downloadUri ="PEMS.Sl.Controls.zip"   />
10    </ assembly >
11 
12  </ manifest >

在你的项目中替换相关的值就可以了. 更改此 XML 文件的属性. 更改为总是拷贝至输出目录

PEMS.Common.Model 同 PEMS.Sl.Controls 项目相同设置.

现在重新编译试试看.

image

PMES.Common.Model 同 PEMS.Sl.Controls 都被打成 zip 包了.

现在看看 PEMS.Sl.UI.xap 多大.

image

 

转载出处:http://www.cnblogs.com/hackerttao/archive/2009/10/16/1584537.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值