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

应用程序清单和程序集清单之间的区别

  •  2
  • PeterK  · 技术社区  · 15 年前

    应用程序清单和程序集清单之间有什么区别?每个都在哪里使用?在.dll或.exe资源中可以找到这两个资源中的哪一个?(或者两者都可以存在?)。

    抱歉,如果一次有太多的问题,但如果有人能向我解释这将是非常有帮助的。我问这个问题的原因是我希望能够从PE文件中嵌入的清单中提取信息。我找到了这些清单的描述,但有两个,我不确定应该遵循哪一个:

    Application manifest description
    Assembly manifest description

    EDIT:不,我不想使用任何API调用。我自己写的。

    3 回复  |  直到 14 年前
        1
  •  4
  •   staafl    11 年前

    简而言之,这两个概念是完全不同的,但名称却很相似。

    应用程序清单

    程序集清单 是CLI程序集中的一节,说明托管程序集的依赖项、组成程序集的文件、程序集的公钥、类型导出、CLR标志等。可以使用检查程序集的清单ILDASM.exe 或者大多数.NET反编译器。

    ECMA 335(CLI规范)的相关摘录,第I.9.6节:

    清单:每个程序集都有一个声明哪些文件的清单 需要程序集来解析 CLI组件,程序集也是通过其 描述程序集中定义的类型和 描述程序集本身的元数据。当程序集包含 包含描述程序集的元数据(包括 其他文件、它们的加密哈希以及它们导出的类型 组件外部)。

    请注意:

    • 所有托管程序集 程序集清单、可执行文件和库;
    • 所有本地二进制文件、可执行文件和库,
        2
  •  0
  •   PeterK    15 年前

    看来我必须遵循两个原则:

    作为DLL中的资源,程序集 可供私人使用 DLL。无法创建程序集清单 作为资源包含在EXE中。 EXE文件可能包含一个应用程序 显示为资源。

    here ). 看来 应用程序清单 嵌入资源和 图书馆 (DLL)有 程序集清单

        3
  •  0
  •   Chris Becke    14 年前

    应用程序清单通常嵌入在EXE和DLL(讽刺的是)中,并指定EXE或DLL依赖于哪些程序集。

    程序集清单可以嵌入到dll中,也可以作为单独的文件放在磁盘上,并为程序集提供一个标识和一个资源列表:dll、无激活com对象和窗口类。

    如果程序集的名称是dll的名称,则同一清单最终将被用作应用程序清单(用于确定dll的依赖关系)和程序集清单(用于查看程序集导出的内容)。对于本机程序集来说,这个选项真的很疯狂,创建一个具有复杂名称的程序集通常更好company.product.module,然后做一个简单的module.dll 作为一个条目。