使用csc.exe,通过命令行来编译源代码,生成IL代码,如下
csc.exe /out:Program.exe /t:exe /r:MSCoreLib.dll Program.cs
意义:指示C#编译器生成一个名叫Program.exe的可执行文件
MSCoreLib.dll是一个特殊的文件,它包含所有的核心类型:Byte,Char,String,Int32等等,因为操作非常频繁,C#编译器会自动引用该程序集,所以上述的命令行代码可以省略/r开关,也可以使用/nostdlib开关,不去引用该程序集
响应文件:
类似于配置文件一样,可以统一设置命令行中的各项开关
元数据概述
元数据是一个二进制数据块,由几个表构成,为三个类型:定义表,引用表,清单表
常用定义表:
ModuleDef:标识模块的记录项
TypeDef:标识类型的记录项
MethodDef:模块中各个方法的记录项
FiledDef:模块中每个字段的记录项
ParamDef:模块中每个方法中参数的记录项
PropertyDef:模块中每个属性的记录项
EventDef:模块中每个事件的记录项
常用引用表:
AssemblyRef:模块引用每个程序集的记录项
ModuleRef:当前模块引用的类型可能是由别的PE模块实现,所有那些模块在这个表中都有一个对应的记录项
TypeRef:模块引用的每个类型在这个表中的记录项
MemberRef:模块引用的成员(字段、方法、属性、事件)
程序集是一个或多个类型定义文件及资源文件的集合,是进行重用、版本控制和应用安全性设置的一个基本单元,它允许将类型和资源文件划分到单独的文件中。
生成一个PE文件程序集时,会在PE文件中嵌入一个标准的Win32版本资源,在应用程序中可以使用System.Diagnostics.FileVersionInfo的static方法GetVersionInfo来获取并检查这些信息
语言文化
标记了一种具体的语言文化的程序集称为附属程序集