最早使用 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
此文件內容爲:
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 項目相同設置.
現在重新編譯試試看.
PMES.Common.Model 同 PEMS.Sl.Controls 都被打成 zip 包了.
現在看看 PEMS.Sl.UI.xap 多大.
轉載出處:http://www.cnblogs.com/hackerttao/archive/2009/10/16/1584537.html