【问题标题】:Are there any similarities between a COM DLL and a .NET DLL other than the extension?除了扩展名之外,COM DLL 和 .NET DLL 之间是否有任何相似之处?
【发布时间】:2011-01-31 21:22:11
【问题描述】:

我最近几年才开始学习编程,所有这些都是在 C#.NET 中进行的。我知道 .NET 之前存在 DLL 文件,所以我想知道我现在创建的 .NET DLL 文件和之前存在的 COM DLL 文件之间是否有任何相似之处?换句话说,如果我将今天创建的 .NET DLL 带回 .NET 之前的时间并将其提供给 COM 开发人员,他们是否能够从文件中获取任何信息?还是只是看起来像一个带有他们熟悉的扩展名的乱码文件?


更新

感谢您迄今为止的回复。那么EXE文件呢? .NET EXE 和 COM EXE 之间有什么相似之处吗?没有安装 .NET 的计算机是否能够找到 .NET exe 的入口点,或者它会简单地认为该文件已损坏或无效?

【问题讨论】:

    标签: .net dll com


    【解决方案1】:

    它们的相似性以及相同扩展的重用在于它们在功能上是等价的。也就是说,它们都是包含潜在共享方法和类的类库。

    但是,除非 .NET dll 是 COM 可见的,否则 COM 开发人员将无法从它们那里获得任何有用的信息。

    编辑:

    根据您的更新,一台未安装 .Net 的机器(甚至一台未安装所需 .Net 框架版本的机器)将能够找到应用程序的入口点,但它会很快失败并出现异常(即是,在它真正做任何事情之前)。

    【讨论】:

      【解决方案2】:

      没有任何通信。 .NET 程序集是一个数据文件,它包含 5 个字节的机器代码。剩下的就是元数据和 IL。没有反编译工具,比如 ildasm.exe 或 Reflector,就够乱码了。

      【讨论】:

      • 其实 .NET 程序集遵循 PE 文件格式。所以它不仅仅是“一个数据文件”。
      • 叹息。它是一种PE32文件格式,只包含5个字节的代码,其余的是数据。
      • 它包含更多的 PE 格式——导出、节等。此外,有时它确实包含超过 5 个字节的非托管代码。
      • @Eugene - 你在干什么?是否存在不包含与文件结构相关的数据的数据文件格式?即使是文本文件也可以。不,除非它是混合模式程序集,否则程序集不包含超过这 5 个字节。
      猜你喜欢
      • 2013-06-18
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      • 2011-01-16
      • 2014-04-05
      相关资源
      最近更新 更多