是否可以确定.NET程序集是以哪种语言编写的?

前端之家收集整理的这篇文章主要介绍了是否可以确定.NET程序集是以哪种语言编写的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一种找到C/C++LI和Managed C程序集的方法,以便可以测试它们内部的所有类,以确保所有继承的方法都被重新实现.我想将其添加为构建流程步骤,以确保它不会再发生.

想到这个问题也让我有点好奇,因为能够确定所使用的任何.NET语言将是有趣的.因此,我进一步比较了所有.NET语言的程序集.到目前为止,这是通过我写的一个小程序发现的,它通过反射来比较来自任何一组.NET程序集的类型和属性数据:

> C# – 具有AssemblyConfigurationAttribute,具有GuidAttribute
> VB – 有很多额外的“我的”类型(例如MyApplication,MySettings),有GuidAttibute
> F# – 有一个FSharpInterfaceDataVersionAttribute,它还指定使用的编译器的版本.
> C(all / clr:safe) – 有一堆额外的类型(FrameInfo,type_info)
> C / clr:safe – 似乎没有独特的反射功能.

按照这个顺序解析可能是合理的:

>如果它有FSharpInterfaceDataVersionAttribute,它是F#
>如果它有任何在我发现的巨大的额外类型中是C.
>它是VB,如果它有“我的*”类型.
>它是C#如果它有AssemblyConfigurationAttribute或GuidAttribute
>可能是C/C++lr:安全

然而,由于这是一个可怕的黑客,我想在这里检查,以确保没有其他选项可用.

解决方法

检查VB或F#类库中的引用似乎是最不爽的方法,但是如其他人所说,它是一个启发式的 – 就像没有明确的方法来告诉本地二进制文件写入哪种语言(但是你可以通过启发式几乎100%肯定)

猜你在找的C&C++相关文章