zoukankan      html  css  js  c++  java
  • 学习 第三章CLR共享程序集和强命名程序集

    CLR 支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly)

    程序集可采用两种方式部署:私有和全局

    弱命名程序集只能以私有方式部署

    强命名程序集部署即可私有又全局。

    强命名程序集具有4个重要特性:文件名(不计扩展名),版本号,语言文化,公钥

    例如:"MyTypes,Vesion=1.0.8123.0,Culture=neutral,PublicKeyToken=b77a5c561934e89"

    注意:可利用辅助类 System.Reflection.AssemblyName 轻松构造程序集名称,并获取程序的各个组成部分

    由于弱命名程序集总是私有部署,所以CLR在应用程序基目录和子目录(具体子目录由XML配置文件的Probing元素的PrivatePath特性指定)中搜索程序集文件时只使用程序集名称(添加.dll和.exe扩展名)

    弱命名程序集除了有文件名,程序集版本号和语言文化,还有发布私钥进行了签名

    创建强命名程序集第一步是用.Net Framework SDK和Microsoft Visual Studio随带的Strong Name实现程序(SN.exe)获取密钥;

    为了生成公钥和私钥对,运行SN.exe: SN -k MyCompany.snk 这告诉SN.exe创建MyCompany.snk 文件。文件中包含二进制形式的公钥和私钥。

    要生成和以前版本的.NET Framework 兼容的程序集,还必须AssemblySignaturekeyAttribute创建联署签名(counter-signature)

    详情参看:https://msdn.microsoft.com/zh-cn/library/hh415055(v=vs.110).aspx

    注意,SN.exe 实用程序未提供任何显示私钥的途径

    编译程序集时使用/keyfile:<file>编译器开关: csc /keyfile:MyCompany.snk Program.cs  ;C#编译器看到这个开关会打开指定文件(MyCompany.snk),用私钥对程序集进行签名,并将公钥嵌入清单。

    注意只能对含有清单的程序集文件进行签名;程序集其他文件不能被显示签名。

    使用LsDasm.exe查看新程序集的元数据。

    全局程序集缓存(Global Assembly Cache,GAC)

      GAC 的具体位置是一种实现细节,不同版本会有所变化。但一般能在以下目录发现它:%systemRoot%micorsoft.NetAssmbly

      开发和测试时在GAC中安装强命名程序集最常见的工具是GACUtil.exe。

    延迟签名

      准备打包自己的强命名程序集时,必须使用受严密保护的私钥对它进行签名。然而,开发和测试程序集时,访问这些受严密保护的私钥可能有点碍事儿。有鉴于此,.net Framework 提供了延迟签名(delayed signing)的支持。

      

        

  • 相关阅读:
    在Eclipse中指定JDK
    VMware桥接模式下主机和和虚机间互相ping不通的处理方法
    CentOS7系列--10.1CentOS7中的GNOME桌面环境
    CentOS7系列--5.3CentOS7中配置和管理Kubernetes
    CentOS7系列--5.2CentOS7中配置和管理Docker
    CentOS7系列--5.1CentOS7中配置和管理KVM
    CentOS7系列--4.1CentOS7中配置DNS服务
    CentOS7系列--3.2CentOS7中配置iSCSI服务
    移动web开发(一)——移动web开发必备知识
    文章索引
  • 原文地址:https://www.cnblogs.com/jzhou/p/CLR.html
Copyright © 2011-2022 走看看