Silverlight自定義類庫實現應用程式快取

2022-01-31 13:03:22 字數 2066 閱讀 6923

預設情況下,如果sl專案引用了一些其它程式集(即通俗意義上的dll檔案),在編譯打包時,這些dll會全部打包到乙個xap檔案裡,隨著引用的dll檔案越來越多,xap檔案會越來越大。

為了改善這種情況,sl引用了"應用程式庫快取"的概念,在vs2010的sl專案中,開啟sl專案的屬性頁,會看到乙個選項:「通過使用應用程式庫快取減少xap大小(r)」

勾上這個後,檢視一下最終的clientbin目錄,會發現一些專案引用的其它程式集,已經分離出來變成了zip檔案

但是有乙個問題,只有強命名的程式集可以這麼做,如果是使用者自己開發的類庫,預設情況下就算你勾選了這個選項,最終還是會將dll一起打包進xap檔案,如何也讓自己開發的sl類庫使用快取呢?

步驟1:先為自己的sl類庫程式集(使用強名稱)簽名

這一步可以借助vs2010完成,見下圖

然後重新編譯

步驟2:建立xml對映檔案

開啟sl類庫的編譯輸出目錄(預設為bin\debug目錄),建立乙個xml檔案,檔名規則如下

比如類庫輸出的dll檔名為mytools.dll,則這個xml檔案必須是mytools.extmap.xml,即 "dll檔案主名+.extmap.xml"(且這個檔案必須跟dll檔案處於同一級目錄),內容如下:

<?xml version="1.0"?>

mytools

1.0.0.0

c934ea1d360b6e15

mytools.dll

解釋一下:

name 為sl類庫程式集的完整名稱

version 指版本號(必須與assemblyinfo.cs中的版本號一致)

publickeytoken 這個東東可以通過sn.exe工具檢視(後面會講到)

以上三項資訊,必須與程式集的元資料一致

relpath 即為dll檔案的物理檔名

downloaduri 這個一般把dll檔名擴充套件名改成.zip即可

publickeytoken的檢視方法:

開啟vs.net-->工具-->外部工具->新增

標題輸入 get sn token(當然也可以改成你喜歡的名字)

命令輸入 c:\program files (x86)\microsoft sdks\windows\v7.0a\bin\netfx 4.0 tools\sn.exe (即sn.exe的完整路徑)

引數輸入 -t $(targetpath)

同時勾選"使用輸出視窗"

完事之後,vs.net工具選單下,應該會出乙個選單項 get sn token

在解決方案視窗上,選中sl類庫專案,先編譯通過,然後再選擇"get sn token"選單,就能看到對應的publickeytoken,如下圖:

步驟3:sl專案引用這個dll(或sl類庫),並正確勾選"通過使用應用程式庫快取減少xap大小(r)」即可

最終在clientbin目錄下,會看到類似下面的輸出:

注意,vs也自動為我們新增了這一行。 

注:應用程式快取不適用於oob方式

Silverlight 自定義加密

silverlight 自定義加密 其他語言同樣適合 首先我們來溫故下基礎知識 位運算 在c 中,這三個運算可以將int byte以二進位制的方式進行按位與 按位或 按位異或運算。1.按位與運算 0與0 1得0,1與1得1。示例 10010001 1111 0000 1001 0000。2.按位或運...

Silverlight自定義按鈕模板

最近在用silverligh做乙個網路檔案管理程式,但用在設計介面的時候覺得silverligh預設的button樣式太大眾化了,所以就產生了自己定義按鈕樣式的念頭.在網路一找的確有很多這方面的文章,但都有乙個問題就是只定義了按鈕的預設狀態的樣式.對於mouseover等基本都沒有的.還好後來在ms...

實現自定義Silverlight的安裝介面

silverlight 在客戶端的安裝方式有兩種,一種是直接的,一種是間接,當你使用silverlight建立了站點或者程式的時候,你可以使用inplaceinstallprompt屬性在建立物件的時候來進行定製.實現自定義安裝silverlight外掛程式 function createsilve...