Ho scoperto come un file .dll di assembly .NET si associa a un .pdb utilizzando un GUID (blog). Quando eseguo il debug in un assembly e richiede il codice sorgente, se si passa a un file, potrebbe dirmi che il codice sorgente è diverso dall'originale. Come lo sa? Mi aspettavo che il file .pdb contenga un checksum per ogni file, ma non sembra. Lo strumento migliore che ho trovato per scaricare le informazioni di debug è dia2dump. I file .pdb C++ avevano voci MD5, ma i file C# .pdb no.Come fa Visual Studio a sapere se il file sorgente corrisponde alla versione originale?
C++ discarica
dia2dump -f dia2dump.pdb>dia2dump.pdb.files.txt
C# discarica
dia2dump -f Autofac.pdb>Autofac.pdb.files.txt
dia2dump -tutti Autofac.pdb>Autofac.pdb.all.txt
c'è qualcosa che perso nella discarica "tutti"?
Deve essere utilizzato un checksum. Se cambio un singolo carattere in Module.cs, ottengo:
Dove trovo il checksum per un file sorgente riferimento in una PDB?
Ho cercato in pdb file molto ultimamente. Puoi trovare maggiori dettagli qui. http://blog.ctaggart.com/search/label/pdb –
Hai mai trovato un modo per estrarre l'hash MD5 dai PDB .NET? – Petrik
L'ho fatto. Ho creato una libreria .NET chiamata SourceLink che può farlo. https://github.com/ctaggart/SourceLink –