我想确定用于创建特定程序集的语言(C#,VB,等等)。
我还想识别编译器(MS one,mono)。
装配中似乎没有任何信息。关于Ecma-335分区II中程序集标题的部分没有提到任何有用的内容。
我想知道程序集中是否有指纹可以揭示“这是C#/ c#编译器特有的东西,你是用C#编写的!”
这对于我正在编写的静态分析工具非常有用。
答案 0 :(得分:1)
这是设计的,程序集存储元数据和IL,语言中立的信息。这样您就可以轻松混合和匹配用不同语言编写的代码。非常好的.NET功能。
但有些提示。 VB.NET程序员可能会使用在.NET框架中的帮助程序集中实现的VB.NET特定语言功能。像我的命名空间和转换运算符,如CType。使用Ildasm.exe打开程序集,然后查看.assembly指令的清单。如果你看到一个用于Microsoft.VisualBasic,那么用VB.NET编写的几率非常高。如果缺少那么C#的赔率很高,虽然不是决定性的。如果查看类列表并在顶部看到<CppImplementationDetails>
,那么您肯定知道它是用C ++ / CLI编写的。
确保您实际上并不关心这一点。