• 学习 第三章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)的支持。

      

        

  • 相关阅读:
    nginx 超时配置、根据域名、端口、链接 配置不同跳转
    nginx 作用,初认识
    JVM理解
    使用开发IDE生成一个springboot工程。
    到spring官网创建第一个springboot工程
    linux 忘记root密码怎么处理。
    学习重新开始
    共同父域下的单点登录
    Bootstrap 与 Jquery validate 结合使用——多个规则实现
    Bootstrap 与 Jquery validate 结合使用——简单实现
  • 原文地址:https://www.cnblogs.com/jzhou/p/CLR.html
Copyright © 2020-2023  润新知