< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

最早使用 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

此文件内容为:

 

复制代码
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

由最初的 452KB. 变为 210 KB. 其他均为动态下载

posted on   Hacker-TTAO  阅读(854)  评论(6编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示