通用语言基础架构 (CLI) 中的程序集,也译作“装配件”,是编译得到的,供CLR进一步编译执行的代码库。代码是用通用中间语言(CIL)表示,在运行时被即時編譯为机器语言。在.NET Framework实现中,这种即時編譯是通用语言运行时 (CLR)的一部分。
CLI程序集可分为两类:进程程序集(EXE)、库程序集(DLL)。
一个程序集可包含一个或多个文件。代码文件成为模块(module)。
程序集名字包括4部分:
CLI程序集可以用版本信息,以避免由于共享的程序集版本差别引起的应用程序冲突。[2] However, this does not eliminate all possible versioning conflicts between assemblies.[3]
通过C#编译器的/reference标记,可以引用一个可执行代码库。
一个共享程序集是强名字的,但在开发时不产生私钥,仅当部署时才产生私钥。
程序集编译为CIL代码,这是一种中间语言。框架内部把CIL字节码转换为本地的汇编代码。对于打印"Hello World"的程序,其等效的CIL代码是:
.method private hidebysig static void Main(string[] args) cil managed {
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 11 (0xb)
.maxstack 1
IL_0000: ldstr "Hello World"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret } // end of method Class1::Main
CIL代码装入String到运行栈,然后调用WriteLine函数再返回。