资讯专栏INFORMATION COLUMN

CLR Via读书笔记第一章(2)程序集和CLR的启动

shengguo / 3448人阅读

摘要:这一节先简单的讨论一下程序集以及的初始化虽然对应的编译器会生成托管模块,但实际上不与托管模块工作,编译器除了编译还有将生成的托管模块转换为程序集的功能,微软还提供了工具程序集链接器。

这一节先简单的讨论一下程序集以及CLR的初始化

虽然对应的编译器会生成托管模块,但实际上CLR不与托管模块工作,编译器除了编译还有将生成的托管模块转换为程序集的功能,微软还提供了工具AL.exe(程序集链接器)。

程序集:

1、是一个或者多个模块或者资源的分组,是安全性、重用、版本控制的最小单元。

2、程序集还有一个类似于懒加载的机制,将不常用的类或者资源放在一个多带带的文件中,当使用时才会下载,可以节约磁盘和缩短安装时间

3、此外程序集还可以自描述,在CLR读取程序集时无需额外信息,因为程序集自带了关于自生的所有信息,所以更容易部署

][2]

编译器会通过源码生成EXE、DLL文件,但无论哪一种最终都是由CLR运行,但运行CLR之前必须先安装.net Framework,判断是否安装只需检查System32目录中是否含有MSCorEE.dll文件即可,微软还提供了CLRVer.exe检查CLR的版本号工具。

但是并不是只要安装了.net Framework就可以运行程序集,需要对应程序集特定的环境才可以运行,例如生成的64位的程序集无法再32位的环境下运行,所以在运行程序集之前需要对检查程序集的信息,可以使用DumpBin.exe和CoreFlags.exe工具查看。

程序集的版本是由编辑器设置的,C#的编译器提供了一个/platform开关选项可以设置生成对应的不同程序集

以下是对应.platform 开关生成的模块在不同环境下的运营情况

![

所以在运行程序集之前大致做了如下几个动作:
1、先读取程序集的信息
2、创建对应环境的进程
3、加载MSCorEE.add文件并调用方法初始化程序集
4、加载程序集
5、调用入口Main方法

至此就完成的CLR的所有准备工作,接下来才是重头戏,CLR如何是如何与程序集工作,你会还了解带托管代码的多处优势

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110547.html

相关文章

  • CLR Via读书笔记一章(3)CLR执行程序IL代码

    摘要:在了解运行之前让我们先简单了解一下除了编译器编译的代码,也是一种汇编语言,也就是说我们可以直接编写代码,当然也有对应的编译器,值得一提的是对于面向的其他语言,只开放了一部分功能,而可以访问的全部功能。 在了解CLR运行之前让我们先简单了解一下IL 除了编译器编译的IL代码,IL也是一种汇编语言,也就是说我们可以直接编写IL代码,当然也有对应的IL编译器,值得一提的是对于面向CLR的其他...

    stormgens 评论0 收藏0
  • .Net Performance[译]

    摘要:充分理解和内部细节,设计和开发高性能的应用程序,解决因性能引起的问题。例如内存管理由垃圾收集器推进工作是一个极其复杂的领域,并且会引起巨大的性能问题如内存泄露和长时间暂停。 英文版 .Net Performance 作者 Sasha Goldshtein,Dima Zurbalev,Ido Flatow 目录 前言关于作者关于审计员鸣谢本书介绍 第一章:性能评定标准 第二章:性能测试...

    yhaolpz 评论0 收藏0
  • ❤️ 爬虫分析CSDN大佬之间关系,堪比娱乐圈 ❤️

    ? 作者主页:不吃西红柿 ? 简介:CSDN博客专家?、信息技术智库公号作者✌简历模板、PPT模板、技术资料尽管【关注】私聊我。历史文章目录:https://t.1yb.co/zHJo ? 欢迎点赞 ? 收藏 ⭐留言 ? 如有错误敬请指正! 本文重点: 1、爬虫获取csdn大佬之间的关系 2、可视化分析暧昧关系,复杂堪比娱乐圈 大佬简介 ? Java李杨勇:一个性感的计算机专业毕业的...

    Michael_Ding 评论0 收藏0
  • scrapy学习笔记

    摘要:是最有名的爬虫框架之一,可以很方便的进行抓取,并且提供了很强的定制型,这里记录简单学习的过程和在实际应用中会遇到的一些常见问题一安装在安装之前有一些依赖需要安装,否则可能会安装失败,的选择器依赖于,还有网络引擎,下面是下安装的过程下安装安装 scrapy是python最有名的爬虫框架之一,可以很方便的进行web抓取,并且提供了很强的定制型,这里记录简单学习的过程和在实际应用中会遇到的一...

    luzhuqun 评论0 收藏0
  • 作为 .Net 攻城师,所必需掌握 .Net Profiling 技术

    摘要:故而性能优化是每一位运维软件开发人员必须掌握的技术。针对这一需求,提供给编写者两种实现方式栈快照和倒影栈。需要注意,仅支持对栈上托管函数的追踪。频繁使用栈快照会为带来过多的额外性能损耗。如此,即可低消耗地进行栈追踪操作。 众所周知,性能问题是所有实用应用在迭代过程中必然要面对的问题。对于此类问题,简单地投入更多硬件资源的做法可能会取得一定效果。但总的来看,此类做法的边际成本是不断上升的...

    jsliang 评论0 收藏0

发表评论

0条评论

shengguo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<