Comment puis-je voir MSIL / CIL généré par le compilateur C#? Pourquoi est-il appelé l'assemblée?
Je suis nouveau sur .NET C# programmation. Je suis en suivant les quelques livres. Il est dit qu'au lieu de le compiler directement en code binaire (code Natif). Haut niveau de code est converti en langage intermédiaire (appelé MSIL aka CIL). Mais quand je compile, j'obtiens un fichier exe/Dll fichier.
- Est-ce MSIL/CIL containted dans ces exe/dll fichier?
- Je veux voir que le code de langage intermédiaire. Juste pour se sentir de son existence. Comment l'afficher?
- Ils sont à l'appel de cette exe/dll fichier un
assembly
. Sont-ils en utilisant le mot de fantaisie" juste pour différencier ces partir de l'exe/dll fichiers qui contiennent le code binaire (code natif)?
Vous devez vous connecter pour publier un commentaire.
.text
section de la Fichier PE (portable executable = *.exe ou *.dll). Plus d'informations peuvent être trouvées ici.Si je peut me conseiller un bon livre sur ce sujet aussi, il est Expert .NET 2.0 IL Assembleur par Serge Lidin. Il est le gars qui a conçu MSIL.
.text
sextion? Si non, qu'est -.text
contenir? et whats up avec le#
je pensais que les sections sont nommés début avec.
. Donc souldn-il pas être.strings
Un de mes façons préférées de voir IL pour un extrait de de C# est d'utiliser gratuitement les LINQPad outil. Après la saisie du code et en choisissant "C# déclarations" au sommet (ou "Programme C#", selon ce qui convient), cliquez sur le "IL" bouton en vertu du code de l'entrée de la zone, et vous verrez l'généré IL.
À l'aide de LINQPad pour ce qui est beaucoup plus pratique que le chargement de Visual Studio ou de l'exécution du compilateur en ligne de commande, puis le chargement de ILDASM et l'ouverture de l' .il fichier avec un éditeur de texte.
Si vous voulez en ligne, .NET Violon est excellent. Il suffit de coller votre code et cliquez sur
View IL
option en haut à droite.P. S Que vous vous en voici quelques livres que je vous recommande fortement CLR via C#.
Je crois qu'ils sont appelés des "ensembles" parce qu'un ensemble est un ensemble de modules, assemblés ensemble par un manifeste.
multi-fichier de l'assemblée http://i.msdn.microsoft.com/dynimg/IC125851.gif
Voir Assemblée Contenu pour plus de détails.
Une autre option: Utiliser ReSharper
Source /IL synchronisés vue: à gauche sur fond bleu ligne correspond avec la droite IL Bloc
Dans Visual Studio:
Prend en charge synchronisés vue du Code Source et de l'IL - lorsque vous cliquez sur une déclaration de la source, le bloc correspondant dans IL est mis en évidence (et vice versa). Affiche les descriptions des IL de Microsoft Developer Network et "CIL (Common Intermediate Language) jeu d'instructions" de l'ECMA spécification de la norme.
voir Affichage de la Langue Intermédiaire (IL) dans Resharper de l'Aide. Photo ci-dessus est de Resharper Aider.
Gratuit option est d'utiliser Jetbrains dotPeek
voir aussi: "l'Exploration de la Langue Intermédiaire (IL) avec ReSharper et dotPeek", par Maarten Balliauw, le 19 janvier 2017 - Jetbrains Blog
À bien des égards .NET assemblées sont similaires à Java bytecode paquets.
Je viens de passer une couple d'heures à chercher le meilleur outil qui pourrait me permettre de visualiser le code IL directement à l'intérieur de Visual Studio.
La seule solution que j'ai trouvé pour l'instant est Msiler https://visualstudiogallery.msdn.microsoft.com/60fc53d4-e414-461b-a27c-3d5d2a53f637
il fonctionne très bien!
Sinon la deuxième meilleure solution, mais sans intégration à visual studio, est JetBrains dotPeek, ce qui est assez impressionnant d'être honnête.
Je sais que c'est une vieille question, et je préfère à tous les outils ci-dessus. Cependant, dans un pincement, il y a eu une MSIL spectateur dans la boîte avec Visual Studio depuis au moins la Version 2005.
L'outil est nommé
ildasm.exe
, et est situé dans les dossiers suivants après par défaut de l'installation de Visual Studio:Visual Studio 2005
"
C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe"
Visual Studio 2008
"
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\ildasm.exe
"Visual Studio 2010
"
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\ildasm.exe
"Pour plus d'informations, voir: "Comment: Vue de l'Assemblée Contenu" dans la Bibliothèque MSDN.
À partir de mon expérience, la meilleure source d'IL-des connaissances liées à Andrew Troelsen “Pro C# et .NET Plate-forme”. Départ de la 3ème édition, il a vraiment, vraiment remarquable chapitre (environ 50 pages) sur la manière de comprendre l'IL et même écrire votre propre code et utiliser ILAsm. J'ai employé cette information pour déterminer si l'héritage multiple n'existe dans .Monde NET. Vous pouvez également essayer d'utiliser une des caractéristiques très intéressantes dans l'ILLINOIS (par exemple, le filtrage des exceptions qui n'existe que dans VB, mais pas en C#).
Je recommande vivement de lire ce chapitre.
Finalement .NET Reflector est un standard de l'entreprise pour enquêter sur IL code des assemblées et Richter livre est certainement "doit se lire" des choses. Mais d'autres livres comme mentionné ci-dessus, vous pourrait révéler des choses vraiment utiles 🙂
Oui, chaque assemblée .NET monde retient certains de IL code (alongsite avec le manifeste), qui pourrait être perçue thru Réflecteur ou ILDasm. Même plus, Réflecteur pourrais vous montrer C# et VB code optimisé. Cela signifie que toute personne peut afficher le code source d'un ensemble, et c'est pourquoi dans les produits commerciaux obfuscators sont utilisés.
Je vous voulez afficher l'intermédiaire de la langue, Essayez de télécharger JustDecompile de Telerik (Qui est actuellement gratuit, nécessite un signe vers le haut).
Glisser dans votre DLL et sélectionnez
IL
partir de la liste déroulante en haut!sharplab est un outil en ligne, idéal pour des cas d'utilisation simples. Tapez votre code sur la gauche, IL s'affiche sur la droite.
Il existe maintenant une autre option. Vous pouvez le faire dans VS Code avec cette extension construit avec Roslyn. C'est actuellement limité à l' .NET de Base.