如何減少silverlight XAP包的尺寸

如何減少silverlight XAP包的尺寸
摘自:http://powertoolsteam.blog.51cto.com/2369428/531409
2011-03-31 10:05:26
原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://powertoolsteam.blog.51cto.com/2369428/531409

這次得到了一個做Silverlight應用開發的機會,在發佈時遇到 xap 包太大的問題,上網看了半天,最後把微軟的這個文檔 “如何使用應用程序庫緩存” 翻來覆去看了半天,終於搞明白了它說的內容,暈啊,真應了 “會者不難” 這句老話。


最後決定把這個其實很簡單的東西總結一下,避免別的新學者浪費時間。


開發場景:

 

Silverlight Application: 與Web交互, 程序集名:SilverlightApplication10.dll
Silverlight Class Library: 被SilverlightApplication10引用,程序集名:SilverlightClassLibrary1.dll
目標:
編譯後的ClientBin中,SilverlightApplication10.xap包中不包含SilverlightClassLibrary1.dll, SilverlightClassLibrary1.dll 以SilverlightClassLibrary1.zip新式單獨存在。
OK, 現在說說這核心三部曲:
1. SilverlighApplication10工程屬性裏”Silverlight”標籤下勾上 “Reduce XAP size by using application library caching”

 

 

2. 在保存SilverlightClassLibrary1.dll的地方增加一個extmap文件” SilverlightClassLibrary1.extmap.xml”

 

 

SilverlightClassLibrary1.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>SilverlightClassLibrary1</name> 
  6.     <version>1.0.0.0</version> 
  7.     <publickeytoken>ee6c3f173c1a51b5</publickeytoken> 
  8.     <relpath>SilverlightClassLibrary1.dll</relpath> 
  9.     <extension downloadUri="SilverlightClassLibrary1.zip" /> 
  10.   </assembly> 
  11. </manifest> 

 

name: SilverlightClassLibrary1 的程序集名字
version: assembly version.
publickeytoken: 打上簽名後的public key
沒什麼太多解釋的,微軟的文檔“如何使用應用程序庫緩存” 裏說的很清楚了。對於version和publikeytoken如果你拿不準的話,可以用reflector看,簡單直接:

 

 

另外,extension downloadUri的內容注意別寫錯了,是 .zip結尾!我有個配置給copy成.dll了,老不成功,以爲還需要設置別的配置,在快把我搞死的時候,才發現這兒寫錯了,唉......
3. SilverlightApplication10 不要引用SilverlightClassLibrary1的工程,要直接引用編譯好的SilverlightClassLibrary1.dll

 

 

OK,最後結果如圖:

 

清爽的xap包!把它改名成SilverlightApplication10.zip,打開看看:

 

 

最後,附上我的測試程序供大家參考:

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