Questo è iniziato come un modo per trovare gli assembly C++/CLI e Managed C++ in modo che tutte le classi interne a loro possano essere testate per garantire che tutti i metodi ereditati siano stati reimplementati. Vorrei aggiungere questo come una fase del processo di costruzione per garantire che non accada mai più.È possibile determinare in quale lingua un assembly .NET è stato scritto ex post facto?
Pensare a questo problema mi ha anche reso un po 'curioso in quanto sarebbe interessante poter determinare qualsiasi linguaggio .NET utilizzato. Per questo motivo, sono andato un po 'oltre e ho confrontato gli assembly di tutti i linguaggi .NET. Finora qui è quello che ho trovato attraverso un piccolo programma che ho scritto che mette a confronto il tipo e attribuire i dati da qualsiasi insieme di assembly .NET attraverso la riflessione:
- C# - Ha AssemblyConfigurationAttribute, HA GuidAttribute
- VB - Ha molti "My" extra (ad esempio MyApplication, MySettings), ha GuidAttibute
- F # - Ha un FSharpInterfaceDataVersionAttribute che specifica anche la versione del compilatore utilizzato.
- C++ (tutto tranne/clr: sicuro) - Ha un sacco di tipi extra (FrameInfo, type_info)
- C++/clr: sicuro - Sembra non avere caratteristiche di riflessione univoche.
Potrebbe essere ragionevole per analizzare in questo ordine:
- E 'F # se ha la FSharpInterfaceDataVersionAttribute
- E' C++ se ne ha l'enorme insieme di tipi in più ho trovato.
- È VB se ha i "My *" Tipi.
- E 'C# se ha AssemblyConfigurationAttribute o GuidAttribute
- E' probabile che sia C++/CLR: Sicuro
Tuttavia, poiché si tratta di un orribile hack, ho voluto verificare in qui per assicurarsi che non ci wasn 't un'altra opzione disponibile.
Interessante domanda, ma perché usare il latino? Retrospettivamente sarebbe più facile da capire. Non tutti qui sono di madrelingua inglese. – danio
@danio: Perché il latino è fantastico? – bcat