构建是由编译和链接组成的序列。
在 .NET 中,源代码被编译成包含通用中间语言和类型信息的程序集。在运行时,JIT 编译器将 CIL 代码转换为本机代码。
我不明白,在 .NET 中,链接是如何以及何时发生的。
有人可以解释一下这个过程吗?
提前致谢
构建是由编译和链接组成的序列。
在 .NET 中,源代码被编译成包含通用中间语言和类型信息的程序集。在运行时,JIT 编译器将 CIL 代码转换为本机代码。
我不明白,在 .NET 中,链接是如何以及何时发生的。
有人可以解释一下这个过程吗?
提前致谢
在 C++ 方面没有链接。
我的意思是,没有任何中间的“obj”/“lib”文件,以后可以分发并与另一个“obj”文件链接。与 C++ 静态链接相反,对程序集的引用始终具有动态行为(始终是动态链接库)。
链接之类的东西是.netmodule
. 您可以使用编译器.netmodule
而不是程序集构建 .NET 源代码(查看此处,尤其是“C# 编译器和 C++ 编译器输出之间的差异”部分),稍后您可以将这些模块链接到一个程序集中(参见al.exe)。
但这是不常见的做法 - 大多数程序集包含单个模块,并且这项工作(源 -> 模块 -> 程序集)已由编译器(例如,csc.exe
)在幕后完成。另外,我不记得有任何产品被重新分发为一组.netmodule
(而不是一组程序集)。