【发布时间】:2015-04-20 13:54:12
【问题描述】:
我一直在通过 c# book 阅读 clr,它说
托管模块是标准的 32 位 Microsoft Windows 可移植可执行 (PE32) 文件或标准 64 位 Windows 可移植可执行 (PE32+) 文件 需要 CLR 执行。
stackoverflow 中的其他问题 What is a module in .NET? 这么说
模块是程序集中代码的逻辑集合
但我的问题是,这在逻辑上是如何收集的?依据是什么?
是否为单个 .cs 文件或用户定义类型或特定命名空间创建托管模块?
【问题讨论】:
-
逻辑收集?你的意思是逻辑连接?
-
你在谈论一个 assembly,链接的问题是在谈论一个 module。在 .NET 中不一样。一个程序集可以有多个模块,但这很不寻常。您所询问的“基础”由程序集链接器 al.exe 涵盖。它将模块粘合在一起以创建一个程序集。一个你永远不会使用的工具。现代计算机有足够的内存可以在一个编译步骤中构建一个程序集。
-
@HansPassant 那么你的意思是一个程序集包含一个托管模块?这是否意味着单个 .csproj 即程序集被编译成单个托管模块。如果是这样,您能否举例说明一个程序集可以有多个托管模块?
-
@YuvalItzchakov 不,我的问题是,单个托管模块中的中间语言代码包含单个 .cs 文件或单个类或单个命名空间或特定程序集中所有文件的编译代码?我很困惑,因为在书中 clr via c# 它说一个程序集可以有多个托管模块。