2010-12-17 12 views
0

Ich erstelle ein Dienstprogramm, das die Quellzeilen von ausführbaren VB.NET-Dateien liest, die meine Firma geschrieben hat. Es wird mit dem ildasm.exe Dienstprogramm auf folgende Weise:Das Ildasm.exe-Tool von .NET scheint nicht alle Quellzeilen auszugeben, um die Datei auszugeben

ildasm.exe/NOBAR/UNICODE/SOURCE "AssemblyToRead.exe" /OUT="App_Dir\CodeOutput\CodeOutput.txt“

Dies führt zu Einige Quellzeilen werden in die Datei CodeOutput.txt geschrieben. Es scheint jedoch so, als ob ihre Quellzeile am Anfang jeder Quelldatei fehlt. Es ist nicht ungewöhnlich, dass eine Quelldatei die ersten 10 bis 20 Codezeilen nicht enthält. Die meisten anderen Linien scheinen originalgetreu zu sein. Hat jemand eine Idee, was ich falsch mache? Danke

Antwort

0

Es gibt keine Quellzeilen in einer ausführbaren Datei, daher kann der Disassembler Quellzeilen daraus nicht lesen. Es erstellt Code, der in dieselbe ausführbare Datei kompiliert wird.

Alle Quellzeilen, die keinen ausführbaren Code erzeugen, werden nicht neu erstellt. Außerdem wird ein Teil des Codes entfernt. Wenn eine Zeile also nichts Nützliches bewirkt, wurde sie möglicherweise in der Kompilierung entfernt.

+0

Obwohl dies korrekt ist, kann es hilfreich sein, wenn Sie versuchen, Haltepunkte in VS.NET zu einem laufenden Programm an nicht ausführbaren Stellen hinzuzufügen und zu sehen, was passiert. ;-) – Lucero

+0

@Lucero: Eigentlich hat das mehr damit zu tun, wie der Compiler im Debug-Modus sicherstellt, dass der ausführbare Code alles in der gleichen Reihenfolge wie im Quellcode ausführt und dass für jede Quellzeile ausführbarer Code existiert (nach Hinzufügen von NOP-Operationen bei Bedarf). – Guffa

+0

Danke Guffa. Genau das musste ich wissen. – lamberms

Verwandte Themen