[C#] Vérification si un fichier est un assembly .NET


Answers

Je suppose que la réponse de Stormenet n'est pas techniquement programmatique , donc je vais séparer ma réponse en une réponse.

Pour de meilleures performances, rien ne va battre l'ouverture du (s) fichier (s) avec StreamReader , lire les (n) premiers octets et vérifier les structures de données de signature de fichier .NET dans le flux d'octets.

À peu près la même chose que vous vérifieriez quelque chose est un exécutable DOS:

http://en.wikipedia.org/wiki/DOS_executable

Recherchez les octets d'en-tête "MZ", qui sont également les initiales de Mark Zbikowski, l'un des développeurs de MS-DOS.

Question

J'ai vu quelques méthodes pour vérifier si un PEFile est un assembly .NET en examinant la structure binaire .

Est-ce la méthode la plus rapide pour tester plusieurs fichiers? Je suppose qu'essayer de charger chaque fichier (par exemple via Assembly.ReflectionOnlyLoad ) peut être assez lent car il va charger des informations de type de fichier.

Note: Je cherche un moyen de vérifier les fichiers par programme.




Le premier lien sera la méthode de vérification la plus rapide et la plus simple (l'en-tête du fichier PE). Vous avez raison de supposer qu'appeler Assembly.ReflectionOnlyLoad va être assez lent.