.NET程序集导入过程

    .NET程序集导入过程分为两个部分,一个是通过Assembly Resolver找到程序集,随后通过Assembly Loader将其导入。

Assembly Resolver 首先运用Version Policies来确定最终的程序集版本。Version Policy可以在三个级别指定,分别是应用程序级别,组件级别和machine级别。每一级都可以通过bindingRedirect将版本重定向,且低级的输出是高级的输入。当Assembly Resolver决定哪一个版本将会被导入后,将定位到确切的程序集文件。首先在Global assembly cache里查找(assemly name必须含有public key),若找不到,则使用CODEBASE hint来定位。若CODEBASE hint没有被提供,Assembly Resolver就开始搜索一系列目录,首先是搜索APPBASE目录和其下的子目录,当然,这些子目录必须要在应用程序的config文件里显示地指定。

       Assembly Loader使用CLR Loader将一个指定的程序集文件导入。CLR Loader负责导入和初始化程序集,模块,资源和类型。CLR Loader采用delay-load的方式,在CLR中,导入主要是由JIT编译器触发的。当JIT编译器试图将一个方法体由CIL转换成机器码时,需要访问类型的类型定义,以及方法中的变量或参数类型。导入一个类型隐含着导入程序集和包含类型定义的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值