拓展名是EXE或者DLL的.net可执行程序称为程序集。
.net程序集与一般的EXE,DLL的区别在于,它包含有metadata。
私有程序集
位于应用程序的目录下。
共享程序集
必须有一个特殊的版本号,唯一的名称,通常安装在全局程序集缓存(gobal assembly cache ,GAC)中。
应用程序域
使得多个程序可以在一个进程中运行,并且一个程序中的错误不会直接影响同一个进程中的其他应用程序。
程序集的结构:
元数据,描述导出类型和方法类型的元数据,MSIL代码和资源。
《命名空间&程序集关系》
一个程序集可有多个命名空间,一个命名空间可以分布在多个程序集中。
尽管程序集中包含相同命名空间,但是没有相同类名。
命名空间---抽象层
程序集-----物理层
《模块&程序集》
一个程序集包含多个模块,模块在需要的时候加载可以更快的启动程序集(讲的比较空)。
csc /target:module a.cs 生成a.netmodule
csc /target:library /addmodule :a.netmodule /out: b.dll
动态加载和创建程序集
要动态编译C#代码,可以用Microsoft.CSharp命名空间下的CSharpCodeProvider类
应用程序域
使用托管IL代码,运行库就不能访问同一个进程中另一个应用程序的内存。
终止应用程序域时,里头的程序集全部释放,如果在主应用程序域中是不能卸载。
先到这里,开始插件~哈哈