这开始是一种查找C++/CLI和托管C++程序集的方法,以便可以测试它们内部的所有类,以确保重新实现所有继承的方法.我想将此添加为构建过程步骤,以确保它不会再次发生.
考虑到这个问题也让我有点好奇,因为能够确定使用的任何.NET语言会很有趣.因此,我进一步比较了所有.NET语言的程序集.到目前为止,我通过我编写的一个小程序发现了这一点,它通过反射比较来自任何.NET程序集的类型和属性数据:
C# - 具有AssemblyConfigurationAttribute,具有GuidAttribute
VB - 有许多额外的"我的"类型(例如MyApplication,MySettings),有GuidAttibute
F# - 具有FSharpInterfaceDataVersionAttribute,它还指定所使用的编译器的版本.
C++(除了/ clr:safe之外) - 有一堆额外的类型(FrameInfo,type_info)
C++/clr:safe - 似乎没有独特的反射功能.
按此顺序解析可能是合理的:
如果它具有FSharpInterfaceDataVersionAttribute,则为F#
它是C++,如果它有我发现的大量额外类型中的任何一种.
它是VB,如果它有"我的*"类型.
它是C#,如果它有AssemblyConfigurationAttribute或GuidAttribute
它可能是C++/clr:安全
然而,由于这是一个可怕的黑客,我想在这里检查,以确保没有其他选项可用.