【问题标题】:Difference Between Assembly and DLL程序集和 DLL 之间的区别
【发布时间】:2010-10-15 00:43:19
【问题描述】:

程序集和 DLL 有什么区别?将代码发送到远程客户端时,应该发送一个 DLL 文件还是应该发送一个程序集(当两个之间有直接 TCP 连接时)?

【问题讨论】:

    标签: .net assemblies


    【解决方案1】:

    程序集是 .NET 的“最小部署单元”。通常一个程序集对应一个文件,但它不是必须的 - 你可以有多个文件,其中一个是知道所有其他位在哪里的主文件。

    单文件程序集通常是 DLL 或 EXE 文件。如果您有一个普通的类库,并且只想将它发送到另一端,那么 DLL 就是您想要的。当你遇到更复杂的场景时,我只会担心:)

    【讨论】:

    • @Jon Skeet,对不起,如果我的问题很幼稚,但是从单文件程序集来看,您的意思是像 class1.cs 这样的单文件。或者如果这看起来不太好,请您稍微解释一下这个术语。
    • @khalidkhan:不,单文件程序集只是由单个文件(通常是 .dll 或 .exe 文件)组成的程序集。它仍然可能来自多个 source 文件。你最终得到一个多文件程序集是非常罕见的......我不记得自己曾经使用过一个。
    • @JonSkeet 是否计算资源文件产生的附属程序集?
    • @Gusdor:通过,恐怕。
    【解决方案2】:

    嗯,.NET dll 是一个程序集,但 .NET exe 也可以是程序集,这意味着所有 .NET dll 都是程序集,但反之则不然。

    您不应该将实际代码发送给客户端。相反,您应该在双方(客户端和服务器)都有类型定义,并在两者之间发送序列化的实例

    【讨论】:

    • 原生 DLL 除外;我不知道我会考虑那些“程序集”,因为这里的术语似乎更像是 .NET 用法。
    • @BobbyShaftoe:我已经更新了指定 .NET 程序集的答案。
    • @capserOne - 您能否详细说明“序列化实例”?
    • @Pushkar:为什么要尝试将整个组件推到电线上?
    • @Casper - 我正在尝试实现一种远程委托机制,该机制需要将移动模块发送到客户端计算机。我们无法发送完整的移动 EXE,因此决定发送代码 - 再次无法发送未编译的代码。所以不得不把它编译成DLL并发送。认为装配会更好。
    【解决方案3】:

    程序集基本上是一个包含 MSIL 代码和元数据的文件。 它是 .NET 应用程序的最小部署单元。 .NET 中的程序集有 2 个扩展名(.exe 和 .dll)

    dll:动态链接库。 所以,我们可以说一个 dll 是一个程序集,但一个程序集可能并不总是一个 dll

    换句话说,dll是一种程序集

    【讨论】:

    • dll is one type of an assembly。这是不正确的。程序集采用 dll 文件的形式。程序集可以是 dll 文件。但 dll 不一定是汇编文件。
    【解决方案4】:

    程序集是包含已编译代码的文件。有两种组件。当你编译你的 C# 程序时,你正在创建一个程序集。可执行文件(有时称为“进程程序集”)具有 EXE 文件扩展名。我们书中的所有程序都编译为可执行文件。这些是您可以执行的程序集;要知道,EXE文件是可以双击运行的。还有一些库程序集,它们具有 DLL 文件扩展名。 DLL 代表动态链接库。它们通常被称为类库,因为它们包含您可以在程序中使用的类。

    【讨论】:

      【解决方案5】:

      的组件,是将被传递到的.NET JIT运行时所述预编译的代码。 P>

      它是可以由任何.NET命令Lanuage运行系统中运行的代码的机器无关的格式。 P>

      DLL和EXE文件是通用格式的组件。 P>

      【讨论】:

        【解决方案6】:

        .exe 1.这些是出站文件。 2.每个应用程序只存在一个.exe 文件。 3. .exe不能与其他应用共享。

        .dll 1.这些是入库文件。 2.许多.dll文件可能存在于一个应用程序中。 3. .dll 可以与其他应用程序共享。

        【讨论】:

        【解决方案7】:

        这个问题似乎无效。 .dll 和 .exe 都是程序集。这只是装配的延伸。两者都可以包含 MSIL 代码,但 .exe 具有单一入口点,即主函数。但是.dll可以有很多入口。

        Assembly 是最小的部署单元,可以是 dll 或 exe。该程序集有静态和动态两种类型。我们是另一种类型的静态程序集,即包含资源(图像、资源文件等)的卫星程序集。您可以通过在 GAC 中注册来为程序集使用强名称,使其可供全球使用。

        【讨论】:

        • 程序集和库 (DLL) 之间存在区别,DLL 是不可执行的。
        【解决方案8】:
        1. DLL 项目独立。

        2. 程序集是特定于项目的。

        3. 程序集是一个或多个文件的集合,其中一个是 DLL 或 EXE。

        4. DLL 包含任何在 Windows 上运行的程序都可以使用的库代码。 DLL 可以包含结构化或面向对象的库。

        5. 一个 DLL 文件可以有几乎无限个可能的入口点。

        6. bin 中的程序集可以有强/弱名称,GAC 中的程序集应该有强名称。

        【讨论】:

          【解决方案9】:

          嗯,“程序集”是用于 .NET 资源的术语。这不一定是 DLL。 DLL 可以是 .NET 资源,但也可以是“本机”资源。程序集可以打包在 DLL 或 EXE 中。这仅取决于特定的程序集。

          如果这与您的其他问题类似,您需要发送包含程序集的文件。你也许可以做一些更复杂的事情,但就是这样。

          【讨论】:

            【解决方案10】:

            从 .NET 项目构建的任何 DLL 都是程序集,就像可执行文件一样。程序集不仅包含在公共语言运行时运行的 CLI 代码,还包含有关程序集中代码的类和结构的完整信息。

            本机 DLL 的不同之处在于它几乎不包含有关 DLL 中包含的代码和资源的任何元信息。本机可执行文件几乎与 DLL 相同。

            程序集非常棒,因为它们的模块化和内置的 API 元数据。

            【讨论】:

              【解决方案11】:

              程序集可以组织到一个文件中,所有这些信息都在其中 合并到单个动态链接库 (DLL) 文件或可执行 (EXE) 文件中,或将信息合并到单独的 DLL 文件中的多个文件中 程序集的主要功能是形成类型、引用和安全性的边界。组件的另一个重要功能是形成一个单元进行部署。

              默认情况下,在创建程序集时,它被标记为私有。如果程序集 必须在多个客户端程序集之间共享,它被放置在 GAC,一个特殊的 Windows 文件夹中。要将私有程序集转换为共享程序集,必须运行实用程序来创建加密密钥,并且必须使用密钥对程序集进行签名。签署程序集后,您必须使用另一个实用程序将共享程序集添加到 GAC。

              【讨论】:

                【解决方案12】:

                程序集和dll的区别有点像飓风和台风的区别。这取决于它发生在哪个海洋。

                .NET 世界中的 dll 或 exe 称为程序集。在本机Windows系统中简称为dll或exe。

                另一个显着的区别是程序集可以是 dll 或可执行文件。而在原生 Windows 系统中,我们通常将 dll 和可执行文件视为两种不同类型的项。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-05-20
                  • 2010-10-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-05-23
                  • 1970-01-01
                  • 2010-09-23
                  相关资源
                  最近更新 更多