反编译程序集,使用了哪种编程语言

时间:2013-05-07 11:40:25

标签: .net decompiling

您如何知道反编译程序集是用C#还是VB.net编写的?

2 个答案:

答案 0 :(得分:1)

我不知道清单/属性中有任何明确的“我是用...编译的”信息。您也许可以使用特征检测(特别是如何实现匿名类型和模块级方法),但是:

  • 在大多数情况下无关紧要
  • 你不知道的编译器可能看似相似,给你错误的答案
  • 并非所有IL都来自编译器;它可以从原始IL组装,或者以IL作为源语言,或者通过元编程技术

就个人而言,我强烈建议避免对源语言的任何依赖

答案 1 :(得分:1)

我依稀记得有一个实用程序集在VB项目中自动引用,但不是C#项目。我说的是.net 1.1时代(Visual Studio 2003)。它使访问Explorer shell的部分变得非常容易。 我一直在寻找,但一直无法找到它(如果我能记住那是什么就会编辑)。它可能在以后的Visual Studios中被淘汰/删除,但这对于原始VB来说是一个非常强大的指标(C#程序集也可以参考它)。

编辑:汉斯在评论中指出,大会是Microsoft.VisualBasic。

除此之外,通过查找不同版本的C#与VB编译器使用的IL模式来编译不同的公共语言结构,可能是可行的。

如果你想要的只是看到编译程序集的源代码的近似值。如果原始程序集没有被混淆,.Net反编译器(如ILSpy,.Net Reflector或dotPeek)的工作做得非常好。