如何检查dll是如何生成的?

时间:2015-12-02 14:18:02

标签: dll visual-studio-2015

有没有办法知道如何生成DLL文件,如VC ++,C#,VB或其他什么?

编辑:我只是想知道我的dll是如何生成的,到目前为止我知道它是非托管代码,但仅此而已。

1 个答案:

答案 0 :(得分:1)

有明确的指标,但没有绝对的方法可以通过查看程序集或IL来判断这一点。不同的编译器具有签名方式,可以解决某些问题,这使您可以很好地猜测用于生成输出的编译器。使用Roslyn,C#和VB.NET变得越来越困难,因为它们现在共享相同的编译器基础结构。

语言中有一些独特的语言功能,可以作为一个明确的指标。

还有一组用于从Visual Studio创建项目时使用的不同语言的引用程序集。但是,C#开发人员仍然可以引用Microsoft.VisualBasic程序集,因此这也无法确定。另外,如果代码中没有使用这些程序集的任何功能,则在编译期间将删除引用。

总而言之,没有明确的方法来告诉用于生成代码的确切语言。它不是程序集的属性,它不存储在标题或任何内容中。

Windows .dll或.exe文件有一个PE头,它包含有关项目类型的一些信息。如果它有一个CLR头,那么它是为.NET运行时构建的(你仍然不知道它是什么,但你知道它的目标)。通过使用依赖性检查器查找公共依赖项(如VB运行时),您可以猜测应用程序是为VB6或更早版本编写的。

另见: