代码之家  ›  专栏  ›  技术社区  ›  contactmatt

.NET单个文件程序集说明

  •  1
  • contactmatt  · 技术社区  · 15 年前

    在我的书“proc#2008和.net3.5平台”中,有一行文字在单个文件程序集的上下文中让我感到困惑。

    在许多情况下,.NET程序集与二进制文件(*.dll或*.exe)之间存在简单的一一对应关系。 因此,如果您正在构建一个.NET*.dll,可以安全地认为二进制文件和程序集是一个整体。同样,如果您正在构建一个可执行的桌面应用程序,*.exe可以简单地称为程序集本身

    -Pro C#2008和.NET 3.5平台,Andrew Troelsen

    这句话的第一句话把我的思想搞乱了。我把.NET单文件程序集理解为一个或多个相关模块的逻辑分组,这些模块最初将作为单个单元进行部署和版本控制。在此程序集中,包含Windows/CLR头、类型元数据、编译的CIL和程序集清单。

    在单文件程序集的上下文中,我无法理解“在.NET程序集和二进制文件(*.dll或*.exe)之间的一对一对应”是什么意思。

    有人能解释一下上面的报价吗?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    这是一个糟糕的评论,作者设计来掩盖他的屁股,但当他不解释它的意思时就毫无意义了。关于visualstudio如何工作的心智模型是完整的,一个项目创建一个程序集。

    但正如你所料,CLR没有这个要求。一个组件可以由多个模块组成。重要的成分是/目标:模块选项对于C编译器和al.exe文件将模块链接到组件中的工具。这些选项对微软来说非常重要,这就是核心程序集所喜欢的mscorlib.dll建立起来。机器的灵魂,你不应该那么体面。

        2
  •  0
  •   Foredecker    15 年前

    简单地说-一个程序集可以包含在一个或多个二进制文件中。在单个二进制文件中的程序集是单个文件程序集。

    -铺路工

        3
  •  0
  •   Mark Richman    15 年前

    我从未见过一个程序集跨越多个dll或exe文件。但是,您可以使用ILmerge将多个程序集合并为一个二进制文件。通常,每个命名空间都会看到一个程序集dll。

        4
  •  0
  •   Erik Funkenbusch    15 年前