Garanti de trouver le chemin de la ildasm.exe et ilasm.exe fichiers peu importe .Version NET/environnement?
Est-il possible d'obtenir par programme les FileInfo/Chemin de la ildasm.exe/ilasm.exe des exécutables? Je suis tenter de décompiler et recompiler un dll/exe fichier de façon appropriée après avoir fait quelques modifications pour elle (je suppose PostSharp fait quelque chose de similaire à modifier la IL après la compilation).
J'ai trouvé un post de blog qui a souligné:
var pfDir = Environment.GetFolderPath(Environment.SpecialFolders.ProgramFiles));
var sdkDir = Path.Combine(pfDir, @"Microsoft SDKs\Windows\v6.0A\bin");
...
Cependant, quand j'ai couru ce code, le répertoire n'existe pas (principalement parce que mon SDK version 7.1), sur ma machine locale le chemin d'accès correct est @"Microsoft SDKs\Windows\v7.1\bin"
. Comment puis-je m'assurer que je peux effectivement trouver la ildasm.exe?
De même, j'ai trouvé un autre blog sur la façon d'obtenir l'accès à ilasm.exe comme:
string windows = Environment.GetFolderPath(Environment.SpecialFolder.System);
string fwork = Path.Combine(windows, @"..\Microsoft.NET\Framework\v2.0.50727");
...
Alors que cela fonctionne, j'ai remarqué que j'ai Framework et Framework64, et dans le Cadre lui-même, j'ai toutes les versions jusqu'à la v4.0.30319 (même avec Framework64). Alors, comment puis-je savoir lequel utiliser? Devrait-il être basé sur la .NET Framework version je suis ciblage?
Résumé:
- Comment correctement vous garantissons de trouver le chemin d'accès correct à ildasm.exe?
- Comment bien sélectionner le bon ilasm.exe pour compiler?
C'est assez décourageant d'entendre qu'il n'y a pas une manière spécifique pour l'accès ildasm.exe. Quel est le ilasm.exe fichier? Si je fais la supposition de VS2012?
OriginalL'auteur m-y | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Une option serait de référence
Microsoft.Build.Utilities.Core
et d'utilisation:Dès maintenant sur ma machine, elle retourne:
ildasm =
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\ildasm.exe
ilasm =
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe
OriginalL'auteur joshcomley
J'ai récemment eu besoin de faire cela, donc je parcouraient les interwebs pour tous les chemins possibles du SDK Windows et recherche par le biais de ceux de la plupart des récentes ordre connu. J'ai aussi vérifier si le système d'exploitation et les processus 64 bits, puis il suffit d'utiliser cette version par la recherche dans les dossiers Program Files. Je ne pense pas que le choix de 64 bits sur les versions 32 bits des outils a une grande signification. La version x86 de ILAsm peut heureusement assembler 64 bits préféré assemblées, sans accroc, c'est tous les IL et pas vraiment de l'exécution du code.
ILDasm est une partie du kit de développement logiciel Windows où ILAsm est juste le .NET Framework SDK voici donc quelques méthodes statiques pour les traquer. Le code est cuit .NET 4.0, mais vous pourriez faire quelques modifications mineures à obtenir de construire sur .NET 2.0 si vous le souhaitez.
Vous pouvez augmenter cette en passant dans l'exécutable que vous recherchez et de changement Répertoire.Existe avec Fichier.Existe ainsi, à vous de voir. Vous pouvez également prendre la listes possibles et les mettre dans un fichier de configuration de sorte que vous pouvez ajouter plus d', sans recompilation.
OriginalL'auteur BrutalDev