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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章