Fork me on GitHub
摘要: 本章要讨论的是.net的各种类型。这章开始,我想摒弃以前的抄书模式,尝试自己阅读后先行总结,然后再写博客。 基元类型 所谓基元类型,指的是编译器直接支持的数据类型。基元类型直接映射到Framework类库中存在的类型。下面四行代码可以生成完全相同的IL: 再看他们的IL代码: 由此可知,这四个写法是 阅读全文
posted @ 2019-02-22 09:27 人舟山 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 类型从System.Object派生 C#中所有类型都是从System.Object派生的,可以显式派生,也可以隐式派生。System.Object的公共方法如下: CLR要求所有对象都用new操作符创建。new操作符所做的事情有: ●计算类型和所有基类型(一直到System.Object)中定义的 阅读全文
posted @ 2019-02-21 10:03 人舟山 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 时至今日,CLR基础部分的学习算是告一段落了。但是因为知识有些庞杂,所以希望在此处做一些总结,以整理所学所得。 1.CLR的执行模型: 简单来说,这部分所叙述的,就是如何将源代码生为一个应用程序,或者生成为一组可以重新分发的组件,以及这些组件中包含的类型。最后还解释了应用程序如何执行。 源代码编译成 阅读全文
posted @ 2019-02-19 18:04 人舟山 阅读(219) 评论(0) 推荐(0) 编辑
摘要: GAC(Global Assembly Cache) 全局程序集缓存 安装公共语言运行库的每台计算机都有一个称为全局程序集缓存的机器级代码缓存。全局程序集缓存存储专门指定由计算机上的多个应用程序共享的程序集。 “运行时”如何解析类型引用 首先是一组毫无营养但是有用的代码: 编译这些代码并生成程序集P 阅读全文
posted @ 2019-02-18 20:12 人舟山 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 强命名程序集能防篡改 用私钥对程序集进行签名,并将公钥和签名嵌入程序集,CLR就可以炎症程序集未被修改或破坏。程序集安装到GAC时,系统对包含清单的那个文件的内容进行哈希处理,将Hash值与PE文件中嵌入的RSA数字签名进行比较。如果两个值完全一致,表明内容未被篡改。此外,系统还对程序集的其他文件的 阅读全文
posted @ 2019-02-18 15:07 人舟山 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 知道如何创建强命名程序集之后,要学习如何部署,以及CLR如何利用信息定位并加载程序集(GAC)。GAC的具体位置会随着不同版本变化。 开发和测试时可以使用GACUtil.exe。路径是"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"。 阅读全文
posted @ 2019-02-18 15:05 人舟山 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 两种程序集,两种部署 CLR支持两种程序集:弱命名和强命名(非官方叫法)。 弱命名程序集和强命名的程序集结构完全相同。二者的区别在于,强命名的程序集使用发布者的公钥/私钥进行了签名。这一对密钥允许程序集进行唯一标识、保护和版本控制,并允许程序集部署到用户机器的各个地方,甚至可以部署到Internet 阅读全文
posted @ 2019-02-18 11:43 人舟山 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Program.exe并非只是含有元数据的PE文件,它还是程序集。程序集是一个或多个类型定义文件及资源文件的集合。在程序集的所有文件中,有一个文件容纳了清单(manifest)。清单也是一个元数据表集合。表中主要包含作为程序集组成部分的那些文件名称。此外,还描述了程序集的版本、语言文化、发布者、公开 阅读全文
posted @ 2019-02-13 18:10 人舟山 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 托管文件PE(Program.exe)文件由四部分构成:PE32(+)头、CLR头、元数据以及IL。PE32(+)头是Windows要求的标准信息。CLR头是一个小的信息快,是需要CLR的模块特有的。这个头包含模块生成时所面向的CLR的major和minor版本号。最后,CLR头还包含模块内部的一些 阅读全文
posted @ 2019-02-12 17:16 人舟山 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 不要在意这就是个应用程序而已。 该应用程序定义了Program类型,其中有Main的public static方法。Main中引用了另一个System.Console。System.Console是Microsoft实现好的类型。用于实现这个类型的各个方法的IL代码存储在MSCorLib.dll中。 阅读全文
posted @ 2019-02-12 14:57 人舟山 阅读(153) 评论(0) 推荐(0) 编辑