托管库和非托管库之间有啥区别?

Posted

技术标签:

【中文标题】托管库和非托管库之间有啥区别?【英文标题】:What are the differences between managed and unmanaged libraries?托管库和非托管库之间有什么区别? 【发布时间】:2014-12-04 17:20:33 【问题描述】:

您能告诉我外部托管库和非托管库之间有哪些变化吗? 托管代码和非托管代码完全相同吗?

【问题讨论】:

我想它的意思是一样的,除非您使用“托管外部库”作为带有托管代码的外部库之外的东西。 看看这个问题:***.com/questions/3563870/… 【参考方案1】:

是的,托管库包含 .NET 代码(也称为程序集),非托管库包含某种本机代码(C++、VB6 或类似代码)。

外部通常意味着您没有自己编译,而是使用了 3rd 方组件。

检查是否作为程序集被管理,

在dotPeek打开。如果是 .NET,它会显示类似“msil”的内容,否则会显示“不支持”。 另一个选项是ILSpy,它将显示“此文件不包含托管程序集”。 工具 ILDASM 随 Windows SDK 一起提供,在本机程序集的情况下会显示“没有有效的 CLR 标头”。 您还可以查看它是否具有 mscoree (.NET) 作为dependency

【讨论】:

@missenna:我已将其添加到我的答案中。目前我认为您希望使用一些工具来检查 .NET,而不是一些代码。 如何使用 dotPeek? 对如何处理此类消息有何建议? @not2qubit: 哪些消息? @ThomasWeller "此文件不包含托管程序集。"

以上是关于托管库和非托管库之间有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

在托管代码和非托管代码之间传递非托管结构的安全数组

托管代码和非托管代码的区别

托管代码和非托管代码的区别

托管代码和非托管代码

运行 Visual Studio 中托管的调试应用程序和直接运行它有啥区别?

如何在托管 (C#) 和非托管 (C++) 代码之间来回传递数组内容