Silverlight 3 Reduce XAP size by using application library caching 应用, 分包下载
2009-10-16 15:15
561 查看
最早使用 IsolatedStorageFile 类缓存 Silverlight 程序. 以便下次打开速度变快. 某天偶尔发现 VS 的 SL 项目属性中. 有此选项.
, 于是上网找找资料. 做了个例子试试. 结果很明显. 400多k 的 xap 文件 被分离成多个. 最后的 xap 文件只有14k 大小.
特将此 demo 的制作过程记录下来, 以备查阅.
1. 项目结构如下:
2. 首先编译. 查看生成的 Xap 文件大小.
452KB.
3. 打开 PEMS.Sl.UI SL 项目的属性页面. 将
选中.
4. 编译解决方案. 查看新的结果.
生成后. 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.
3. 在 AssemblyInfo.cs 文件中添加 [assembly: AssemblyKeyFile("key.public.snl")]
4. 在项目中创建一个 AssemblyName.extmap.xml 文件. 我这里叫做 PEMS.Sl.Controls.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>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 项目相同设置.
现在重新编译试试看.
PMES.Common.Model 同 PEMS.Sl.Controls 都被打成 zip 包了.
现在看看 PEMS.Sl.UI.xap 多大.
由最初的 452KB. 变为 210 KB. 其他均为动态下载
, 于是上网找找资料. 做了个例子试试. 结果很明显. 400多k 的 xap 文件 被分离成多个. 最后的 xap 文件只有14k 大小.
特将此 demo 的制作过程记录下来, 以备查阅.
1. 项目结构如下:
2. 首先编译. 查看生成的 Xap 文件大小.
452KB.
3. 打开 PEMS.Sl.UI SL 项目的属性页面. 将
选中.
4. 编译解决方案. 查看新的结果.
生成后. 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.
3. 在 AssemblyInfo.cs 文件中添加 [assembly: AssemblyKeyFile("key.public.snl")]
4. 在项目中创建一个 AssemblyName.extmap.xml 文件. 我这里叫做 PEMS.Sl.Controls.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>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 项目相同设置.
现在重新编译试试看.
PMES.Common.Model 同 PEMS.Sl.Controls 都被打成 zip 包了.
现在看看 PEMS.Sl.UI.xap 多大.
由最初的 452KB. 变为 210 KB. 其他均为动态下载
相关文章推荐
- Silverlight 3 Reduce XAP size by using application library caching 应用, 分包下载(转载)
- Step By Step - Using Silverlight to Access a WCF Service Hosted In a Console Application
- [转载]Step By Step - Using Silverlight to Access a WCF Service Hosted In a Console Application
- Create a Java Web Application using Embedded Tomcat (如何使用Embedded 创建一个基于Tomcat的Web 应用))
- Enterprise Library Logging Application Block Step by Step(2)
- Enterprise Library Library Data Access Application Block Step By Step
- cache技术提高Web应用性能(Enhancing Web Application Performance with Caching)
- Using the Enterprise Library Validation Application Block in ASP.NET - Part II
- Enterprise Library Step By Step系列(六):安全应用程序块——进阶篇
- 使用CxImage (Using MFC by a Static Library + Realese or Debug 模式)
- Microsoft Enterprise Library Caching Application Block
- Silverlight 4 + RIA Services之商业应用系列----7 使用RIA Service Class Library
- How to use an ASP.NET application to query an Indexing Service catalog by using Visual Basic .NET
- App Store 上传应用时的新问题,You must submit your builds using Xcode 5.1.1 or later, or Application Loader 2.
- Using Second Level Caching in a JPA Application
- This is caused by library dependencies that have been compiled using Java 8 or above.
- Enterprise Library Policy Injection Application Block 之三:PIAB的扩展—创建自定义CallHandler(提供Source Code下载)
- Step-by-Step:Installation and Configuration of a secure web application using MySQL,OpenSA Web Server, Tomcat and OpenSSL,on a N
- 今天下载安装了Enterprise Library for .NET Framework 2.0 - January 2006,准备试试dataAccess application block
- Enterprise Library Step By Step系列(五):安全应用程序块——入门篇