Dowiedziałem się, w jaki sposób plik .dll zestawu .NET jest mapowany do pliku .pdb przy użyciu identyfikatora GUID (blog). Kiedy debuguję do złożenia i prosi o kod źródłowy, jeśli przejdę do pliku, może mi powiedzieć, że kod źródłowy różni się od oryginału. Skąd to wie? Oczekiwano, że plik .pdb będzie zawierał sumę kontrolną dla każdego pliku, ale nie wygląda na to. Najlepszym narzędziem do zrzutu informacji debugujących jest dia2dump. Pliki C++ .pdb miały wpisy MD5, ale pliki C# .pdb nie.W jaki sposób program Visual Studio wie, czy plik źródłowy jest zgodny z oryginalną wersją?
C++ zrzucić
dia2dump -f dia2dump.pdb>dia2dump.pdb.files.txt
C# wysypisko
dia2dump -f Autofac.pdb>Autofac.pdb.files.txt
dia2dump -wszystkie Autofac.pdb>Autofac.pdb.all.txt
Czy jest coś brakowało w "wszystkich" wysypisku?
Musi używać sumy kontrolnej. Jeśli zmienię pojedynczy znak w Module.cs, otrzymuję:
Gdzie znajdę sumy kontrolnej dla pliku źródłowego wskazanej w .pdb?
Szukałem w WPB plików dużo ostatnio. Możesz znaleźć więcej szczegółów tutaj. http://blog.ctaggart.com/search/label/pdb –
Czy kiedykolwiek znalazłeś sposób na uzyskanie skrótu MD5 z PDB .NET? – Petrik
Zrobiłem. Stworzyłem bibliotekę .NET o nazwie SourceLink, która może to zrobić. https://github.com/ctaggart/SourceLink –