.NET100问(.NET框架基础)

2021-06-07 04:01

阅读:514

标签:.net   文件夹   codebase   deb   签名   程序集   开发   查找   framework   

1. .NET运行机制

  1.1 .NET程序被编译成什么形式的代码?

    .NET程序在第一次编译后,形成CLR头、元数据和中间代码。在实施或者部署时,将经过第二次编译,编译的结果是在CLR中形成可执行的机器代码。

  1.2 JIT是如何工作的?

    JIT(实时编译)引擎在编译中间代码之前,会寻找方法的本机机器代码缓存并且判断其是否可用,如果可用则直接加载,如果不可用,JIT引擎会查找类型中的方法存根,找到该中间代码并且进行编译。

  1.3 简述程序集的加载机制

    CLR通过System.Reflection.Assembly.LoadForm和System.Reflection.Assemblty.Load来主动地加载程序集。前者通过位置而后者通过唯一标识强命名程序集的四个元素来标识程序集。CLR的加载机制和Load方法一致,其内在策略是依次通过版本策略、CODEBASE位置、应用程序域位置和应用程序位置来查找程序集。

2.  如何配置程序集的版本策略?

  CLR支持在3个级别上设定版本策略,依次是:应用程序策略、发行者策略和计算机策略。所有策略的设置都是通过修改配置文件来实现。3个级别的策略依次会被CLR执行,而上一个策略的执行结果将被作为下一个策略的输入。发行者策略仅仅针对那些 放入GAC(全局程序集缓存)的程序集,并且可以在应用程序策略中被指定忽略。

3.生成、部署和管理(*)

  3.1 如何生成强签名的程序集?

    生成强签名的程序集需要有公钥/私钥对后,就可以控制编译器的输入参数来得到一个强签名的程序集。对于C#的编译器csc.exe来说,可以用/keyfile参数来制定使用那个公钥/私钥文件。

  3.2 如何把程序集放入GAC中

    GAC是一个具有特定目录结构的文件夹,所有强签名的程序集都可以被放入GAC中。可以通过.NET Framework自带的assembly viewer来简单地拖动添加一个程序集到GAC中,也可以利用诸如gacutil.exe等工具使用命令行来添加。总之,任何方法都是根据GAC的规范和程序集本身的特性,在GAC目录下简历相应的子目录结构。

  3.3 延迟签名及其作用

    延迟签名就是把对强签名程序集的私钥加密和数字签名延迟到实际发布时进行。延迟签名提高了开发测试阶段的效率,也方便了机构和项目组管理自己的私钥。

  3.4 程序集的版本分哪几个部分

    程序集的版本号分为四个部分:主版本号、此版本号、内部版本号和修改号。

  

 

.NET100问(.NET框架基础)

标签:.net   文件夹   codebase   deb   签名   程序集   开发   查找   framework   

原文地址:http://www.cnblogs.com/HoloSherry/p/7328007.html


评论


亲,登录后才可以留言!