Browse Source

#1942: Make sure to group all types by filename in the generated PDB.

pull/1951/head
Siegfried Pammer 5 years ago
parent
commit
22799ca6b1
  1. 13
      ICSharpCode.Decompiler/DebugInfo/PortablePdbWriter.cs

13
ICSharpCode.Decompiler/DebugInfo/PortablePdbWriter.cs

@ -62,11 +62,15 @@ namespace ICSharpCode.Decompiler.DebugInfo
var customMethodDebugInfo = new List<(MethodDefinitionHandle Parent, GuidHandle Guid, BlobHandle Blob)>(); var customMethodDebugInfo = new List<(MethodDefinitionHandle Parent, GuidHandle Guid, BlobHandle Blob)>();
var globalImportScope = metadata.AddImportScope(default, default); var globalImportScope = metadata.AddImportScope(default, default);
foreach (var handle in reader.GetTopLevelTypeDefinitions()) { string BuildFileNameFromTypeName(TypeDefinitionHandle handle)
var type = reader.GetTypeDefinition(handle); {
var typeName = handle.GetFullTypeName(reader).TopLevelTypeName;
return Path.Combine(WholeProjectDecompiler.CleanUpFileName(typeName.Namespace), WholeProjectDecompiler.CleanUpFileName(typeName.Name) + ".cs");
}
foreach (var sourceFile in reader.GetTopLevelTypeDefinitions().GroupBy(BuildFileNameFromTypeName)) {
// Generate syntax tree // Generate syntax tree
var syntaxTree = decompiler.DecompileTypes(new[] { handle }); var syntaxTree = decompiler.DecompileTypes(sourceFile);
if (!syntaxTree.HasChildren) if (!syntaxTree.HasChildren)
continue; continue;
@ -84,8 +88,7 @@ namespace ICSharpCode.Decompiler.DebugInfo
lock (metadata) { lock (metadata) {
var sourceBlob = WriteSourceToBlob(metadata, sourceText, out var sourceCheckSum); var sourceBlob = WriteSourceToBlob(metadata, sourceText, out var sourceCheckSum);
var typeName = type.GetFullTypeName(reader).TopLevelTypeName; var name = metadata.GetOrAddDocumentName(sourceFile.Key);
var name = metadata.GetOrAddDocumentName(Path.Combine(WholeProjectDecompiler.CleanUpFileName(typeName.Namespace), WholeProjectDecompiler.CleanUpFileName(typeName.Name) + ".cs"));
// Create Document(Handle) // Create Document(Handle)
var document = metadata.AddDocument(name, var document = metadata.AddDocument(name,

Loading…
Cancel
Save