.NET Framework 部署目标
DLL hell 安装一个程序,破坏了另一个程序
安装的复杂性 设计的东西太多
涉及安全性 自动下载
将类型生成到模块中
使用csc.exe 进行编译
/out: 生成可执行文件
/t:exe 生成的文件是Win32控制台应用程序类型
/r: 应用库
/nostdlib 不自动应用MSCorLib.dll程序集
响应文件,一组命令的集合使用@指令引用文件,就是为了简便上面的操作
C#编译器支持多个响应文件,在.NET Framework 安装时会安装一个CSC.rsp文件,
>然后编译器会汇总本地的和全局的响应文件,有冲突,以本地为主
元数据的概述
现在知道创建的是什么类型的PE文件
托管的PE文件由4个部分组成
PE32(+) 标准可执行文件头
CLR头
>major and minor 主次版本号,
>flag
>MethodDef token(模块的入口方法)
>元数据表的大小和编译,可以查看CorHdr.h头文件
元数据
>定义表
>ModuleDef 总是包含对模块进行标识的一个记录项
>TypeDef 模块定义的每个类型在这个表中都有一个记录项
>MethodDef 模块定义的每个方法在这个表中都有一个记录项
>FieldDef 模块定义的每个字段在这个表中都有一个记录项
>ParamDef 模块定义的每个参数在这个表中都有一个记录项
>PropertyDef 模块定义的每个属性在这个表中都有一个记录项
>EventDef 模块定义的每个事件在这个表中都有一个记录项
>引用表
>AssemblyRef
>ModuleRef 实现该模块所引用的类型的每个PE模块在这个表中都有一个记录项
>TypeRef 该模块的每个类型在这个表中都有一个记录项,包含类型的名称和一个引用
>MemberRef 模块引用的每个成员在这个表中都有一个记录项
>清单表
IL 可使用ILDasm查看
将模块合并成程序集
程序集:是一个或多个类型定义文件以及资源文件的集合
>程序集是进行重用,版本控制和应用安全性设置的基本单位
清单元数据表(manifest)
>AssemblyDef 程序集
>FileDef 作为程序集一部分的每个PE文件和资源文件在这个表都有一个记录项
>MainfestResourceDef
>ExportedTypesDef