确定用于创建程序集的语言和编译器?

时间:2010-07-31 14:46:32

标签: .net assemblies

我想确定用于创建特定程序集的语言(C#,VB,等等)。

我还想识别编译器(MS one,mono)。

装配中似乎没有任何信息。关于Ecma-335分区II中程序集标题的部分没有提到任何有用的内容。

我想知道程序集中是否有指纹可以揭示“这是C#/ c#编译器特有的东西,你是用C#编写的!”

这对于我正在编写的静态分析工具非常有用。

1 个答案:

答案 0 :(得分:1)

这是设计的,程序集存储元数据和IL,语言中立的信息。这样您就可以轻松混合和匹配用不同语言编写的代码。非常好的.NET功能。

但有些提示。 VB.NET程序员可能会使用在.NET框架中的帮助程序集中实现的VB.NET特定语言功能。像我的命名空间和转换运算符,如CType。使用Ildasm.exe打开程序集,然后查看.assembly指令的清单。如果你看到一个用于Microsoft.VisualBasic,那么用VB.NET编写的几率非常高。如果缺少那么C#的赔率很高,虽然不是决定性的。如果查看类列表并在顶部看到<CppImplementationDetails>,那么您肯定知道它是用C ++ / CLI编写的。

确保您实际上并不关心这一点。