随笔分类 - [01] .NET框架
摘要:在C#中,用`virtual`关键字修饰的方法(属性、事件)称为虚方法(属性、事件),表示该方法可以由派生类重写(override)。虚方法是.NET中的重要概念,可以说在某种程度上,虚方法使得多态成为可能。然而虚方法的使用却存在着很大学问,如果滥用的话势必对程序产生很大的负面影响。
阅读全文
摘要:第2章讨论的主要是私有部署(private deployment),即程序集放在应用程序的根目录及其子目录中。以私有方式部署程序集可以在很大程度上控制程序集的命名、版本化和行为。本章将讨论的是可以被多个应用程序共同访问的程序集,全局部署程序集(globally deployed assembly)。
阅读全文
摘要:用户或管理员可以在很大程度上决定应用程序的执行。例如,管理员可以决定将程序集文件移动到用户硬盘上,或者重写程序集清单中的信息。要对应用程序进行管理控制,可以在程序目录中放置一个配置文件。程序发布者创建该配置文件并打包。此外,机器的管理员或最终用户也可以创建或修改。CLR通过解析该文件的内容来更改定位和加载程序集文件的策略。
阅读全文
摘要:和版本号一样,程序集还将语言文化作为其标识的一部分。例如,我可能有一个专门用于德语的程序集,一个用于瑞士德语的程序集和一个用于美国英语的程序集。语言文化通过一个包含主标记和次标记的字符串来标识。
阅读全文
摘要:当AL.exe或CSC.exe生成PE文件程序集时,还在PE文件中内嵌了一个标准的Win32版本资源。用户可以查看文件属性找到该资源。应用程序代码还可以在运行时调用System.Diagnostics.FileVersionInfo的GetVersionInfo静态方法来得到资源信息。
阅读全文
摘要:本文共三个部分,分别介绍了如何使用Visual Studio IDE为项目添加程序集引用,使用Assembly Linker工具,以及如何在程序集中添加资源文件
阅读全文
摘要:上一篇随笔中讨论的Program.exe不仅仅是一个包含元数据的PE文件,它还是一个程序集。程序集是一个或多个包含类型定义的文件和资源文件的集合。程序集的某个文件用来保存清单(manifest)。清单是另外一组元数据表的集合,主要包含了程序集中一部分文件的名称。这些元数据表还描述了程序集的版本、语言文化、发布者、公有导出类型和组成程序集的所有文件。
阅读全文
摘要:元数据是一个由多个表组成的二进制数据块。表的种类有三种:定义表、引用表和清单(manifest)表。可以通过View—MetaInfo—Show!菜单项(或CTRL+M)以一种可读的方式打开元数据。强烈建议大家体验一下ILDasm。它可以显示大量信息,对这些信息理解得越多,就越能深入理解CLR及其功能。
阅读全文
摘要:2.1节主要介绍.NET Framework的部署目标。2.2节主要介绍如何将一个包含不同类型的源文件,转换为可部署的文件。
阅读全文
摘要:.NET Framework提供了大量其他开发平台没有的优势。但是,很少有公司能够下决心重新设计和实现既有代码。微软意识到了这一点,使CLR提供了一种机制,允许应用程序由托管和非托管的部分组成。
阅读全文
摘要:CLR允许不同语言创建的对象之间能够相互进行通信。换句话说,CLR集成了所有语言,并且允许一种语言创建的对象在另一种完全不同的语言编写的代码中被看做是等同的成员。CLR的标准类型集合、元数据(自描述类型信息)和通用执行环境,使这种集成成为可能。
阅读全文
摘要:类型是CLR的基本,微软创建了一个正式的规约——通用类型系统(Common Type System,CTS)来描述类型的定义和行为。CTS还指定了类型可见性和访问类型成员的一些规则。CTS建立了以程序集作为类型可见性边界的规则,CLR遵循了这些可见性规则。此外,CTS还定义了管理类型继承、虚拟方法、对象生命周期的规则。设计这些规则的目的是使它们的语义可以用现代编程语言方便地表达出来。
阅读全文
摘要:FCL中相关的一些类型放置于一个单独的命名空间中。System命名空间中包含Object,integer、character、string、异常处理、控制台I/O、数据类型转换和格式化、生成随机数、执行数学函数等等。所有应用程序都需要使用System命名空间下的类型。
阅读全文
摘要:NGen.exe工具(本机映像生成器)随.NET Framework一起发布,用来在客户机上安装应用程序时,将IL代码编译为本地代码。由于代码在安装时已经编译了,运行时JIT编译器就无需再次编译,这可以提升程序性能。
阅读全文
摘要:托管程序集中包含元数据和IL。IL是独立于CPU的机器语言,比大多数CPU机器语言都要高级得多。IL可以访问和操作对象类型,包含创建和初始化对象、调用虚方法和直接操作数组元素、抛出和捕获异常的指令。可以将IL看成是一门面向对象的机器语言。
阅读全文
摘要:程序集或者是一个可执行的应用程序,或者是一个包含一组类型的DLL,这些类型供可执行的应用程序使用。CLR负责管理包含在这些程序集中的代码的执行。这意味着主机上必须安装.NET Framework。
阅读全文
摘要:年前的面试经历(二)一文中提出了字符串的内存分配问题,引起园友们的广泛热议。我想程序员应该都是“刨根问底”栏目组的,不把问题刨个稀烂决不罢休。我这里也来简单地讨论一下。
阅读全文
摘要:实际上,CLR直接打交道的是程序集,而不是模块。程序集是一个抽象的概念,首先,它是一个或多个模块或资源文件的逻辑组合(即程序集由多个模块和资源文件组成)。其次,它是复用、安全、版本的最小单元。根据所选择的编译器和工具的不同,可以生成单一文件或多个文件的程序集。在CLR世界里,程序集就是我们称作组件(component)的东西。
阅读全文
摘要:CLR顾名思义,是指可被各种不同编程语言使用的运行时。CLR的核心特性可用于所有面向它的编程语言。例如,运行时使用异常来报告错误,那么所有面向运行时的语言都可以通过异常来得到错误报告。又如,运行时也允许创建线程,因此所有面向运行时的语言也都可以创建线程。
阅读全文