程序集(初尝,也是为插件程序准备)

拓展名是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代码,运行库就不能访问同一个进程中另一个应用程序的内存。

终止应用程序域时,里头的程序集全部释放,如果在主应用程序域中是不能卸载。

先到这里,开始插件~哈哈

原文地址:https://www.cnblogs.com/jiangzhen/p/1685362.html