silverlight自定义程序集缓存

   在上一篇中提到silverlight可以将一些程序集缓存。不过默认情况下,在silverlight中自定义的程序集不支持程序集缓存。但是,你可以通过满足两个条件而让它支持。

 首先,自定义程序集必须有一个强名称(strong name)。 项目中需要用到一个叫做C的类库,如图

 2011011315350018.png

 为C创建强名称密钥,有以下几个步骤:

 1.右键单击C项目,选择属性

 2.点击签名选项卡

 2011011314492786.png

 3.选择为程序集签名选项

 2011011314495932.png

 4.在选择强名称密钥文件下来菜单中,选择新建选项弹出创建强名称密钥窗口

 2011011314510858.png

 弹出的窗口

2011011314543487.png

 5.在弹出的窗口中输入文件名称(比如C,不一定非和程序集名称相同),密码可以选择也可以不选。

 6.点击确定,visual studio 会创建一个key文件并添加到项目下,如图中C.snk便是创建的key文件

 2011011315361752.png 

  从现在开始,每次编译项目时,visual studio都会用这个key为程序集签名。光有这个key还不行,还需要知道为你程序签名的key的公钥(public key token),这时需要用到Visual Studio自带的签名工具。

  在程序中打开Visual Studio 2010,选择Visual Studio Tools,然后Visual Studio命令提示

    2011011315162228.png

  运行以下命令

  sn -p H:\Jerry\Person\Demo\SLApplicationModel\C\C.snk C.bin

  sn -t C.bin

  红色部分表示你的key的绝对路径;C.bin表示程序的bin文件夹

  命令完成后会看到一下内容

 2011011315372748.png

 其中的公钥标记后边的一串数字是在下边要用到。

 第二 创建一个描述自己内容的后缀为.extmap.xml的XML文件

 .extmap.xml就是普通的XML文件,但它的名称需要和你的程序集名称相一致。比如,程序集叫C.dll,需要创建一个叫C.extmap.xml的XML文件。这个文件告诉silverlight此程序集支持程序集缓存。

 2011011315435857.png

  C.extmap.xml内容

<?xml version="1.0"?>
  <manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <assembly>
   <name>C</name>   
     <version>1.0.0.0</version>  
     <publickeytoken>6f2ff986d4bcb927</publickeytoken>  
     <relpath>C.dll</relpath>  
     <extension downloadUri="C.zip" />  
    </assembly
  </manifest>

 name和version和你的程序集相匹配;publickeytoken就是上边产生的那一串数字;relpath是程序集的全称.

 downloadUri提供了最重要的信息------告诉程序在哪里寻找已经打包好的DLL。通常有两种选择,最简单的方法就是上边用到的:提供一个文件名称。当在silverlight中使用程序集缓存时,Visual Studio会找到程序集,压缩它并且和XAP包放一块。这是silverlight内置程序集使用的方法。

 另一个选择是使用绝对的URI,比如

 <extension downloadUri="http://www.cnblogs.com/HellenTian/C.zip"/>

用这种方法Vistual Studio将不会打包你的程序集,但是需要自己提前打包好放在silverlight程序的目录下。这在多个程序之间实现共享时十分方便。但是,下载路径必须是在和程序相同的域名下或是允许跨域访问的其他站点下。

现在在项目SLApplicationModel中调用这个程序集,并选择程序集缓存,最后编译项目。查看Bin\Debug目录,会看到C.ZIP

2011011316330162.png

转载于:https://www.cnblogs.com/HellenTian/archive/2011/01/13/1934649.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值