預設情況下,如果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...