Quels sont les outils du bytecode CLR/.NET?


7

Je connais bien les outils Java pour manipuler, générer, décompiler le bytecode JVM (ASM, cglib, jad, etc). Quels outils similaires existent pour le bytecode CLR? Est-ce que les gens font des manipulations bytecode pour le CLR? Je pense à

2

Le bytecode est un format binaire. Les assemblys .NET fonctionnent différemment en termes de stockage des instructions d'exécution. Au lieu de compiler vers une structure de type bytecode, les langages .NET sont compilés dans un langage intermédiaire (en fait, cela s'appelle juste cela - IL).

Il s'agit d'un langage lisible par l'homme qui ressemble un peu à une version orientée objet de l'assembleur. Donc, en termes d'examen ou de manipulation de l'IL pour des assemblages individuels, des outils comme Reflector et ILDASM vous permettent de visualiser facilement l'IL pour tout assemblage.

La manipulation est un peu différente, je suggère de jeter un oeil à certains des outils AOP dans l'espace .NET. Je suggère également de jeter un oeil à Phoenix, qui est un projet de compilation que MS a dans les travaux. Il a quelques fonctionnalités de manipulation post-compilation très cool.

Si vous voulez en savoir plus sur les outils .NET AOP, je vous suggérerais d'ouvrir une autre question (c'est une autre boîte de Pandore).

Il existe également plusieurs livres qui vous apprendront les tenants et les aboutissants de l'IL. Ce n'est pas une langue très compliquée à apprendre.

+8

"Les assemblages NET fonctionnent différemment en termes de stockage des instructions d'exécution" non, ils ne le font pas ... tout est finalement compilé en un "format binaire" . Ce format binaire a une correspondance 1 à 1 avec IL. 06 août. 092009-08-06 09:53:04


4

ILDASM et Reflector.


14

Réflecteur est toujours bon, mais Mono.Cecil est le meilleur outil que vous pouvez éventuellement demander globalement. C'est inestimable pour manipuler CIL de quelque façon que ce soit.


7

Mono.Cecil est un excellent outil comme ASM. C'est un sous-projet de Mono, et totalement open source. Il fournit même better feature que System.Reflection.


1

NDepend permet d'effectuer des analyses statiques .NET assemblées (mesures de code, analyse de dépendance, etc.). NDepend est très utile pour obtenir une vue d'ensemble de la structure de vos assemblys .NET en utilisant la matrice de dépendances, les graphes de dépendance et les métriques treemap visualizations.

Il est également intégré à Reflector: par exemple, vous pouvez détecter les types et méthodes importants dans vos assemblées en utilisant respectivement un Type/Méthode Rank metric (une métrique de code similaire à Google Page Rank) et passer directement de NDepend à Reflector récupérer le code désassemblé en C#, VB.NET, etc.