13

构建是由编译和链接组成的序列。

在 .NET 中,源代码被编译成包含通用中间语言和类型信息的程序集。在运行时,JIT 编译器将 CIL 代码转换为本机代码。

我不明白,在 .NET 中,链接是如何以及何时发生的。

有人可以解释一下这个过程吗?

提前致谢

4

1 回答 1

12

在 C++ 方面没有链接。

我的意思是,没有任何中间的“obj”/“lib”文件,以后可以分发并与另一个“obj”文件链接。与 C++ 静态链接相反,对程序集的引用始终具有动态行为(始终是动态链接库)。

链接之的东西是.netmodule. 您可以使用编译器.netmodule而不是程序集构建 .NET 源代码(查看此处,尤其是“C# 编译器和 C++ 编译器输出之间的差异”部分),稍后您可以将这些模块链接到一个程序集中(参见al.exe)。

但这是不常见的做法 - 大多数程序集包含单个模块,并且这项工作(源 -> 模块 -> 程序集)已由编译器(例如,csc.exe)在幕后完成。另外,我不记得有任何产品被重新分发为一组.netmodule(而不是一组程序集)。

于 2012-08-27T10:13:54.120 回答