Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Document Struct

Definition

Namespace:
System.Reflection.Metadata
Assembly:
System.Reflection.Metadata.dll
Package:
System.Reflection.Metadata v11.0.0-preview.5.26302.115
Source:
Document.cs
Source:
Document.cs
Source:
Document.cs
Source:
Document.cs
Source:
Document.cs
Source:
Document.cs
Source:
Document.cs

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

The source document in the debug metadata.

public value class Document
public readonly struct Document
public struct Document
type Document = struct
Public Structure Document
Inheritance
Document

Examples

This example shows how to display information about source documents in the Portable PDB file:

static string ReadDocumentPath(MetadataReader reader, Document doc)
{
 BlobReader blob = reader.GetBlobReader(doc.Name);

 // Read path separator character
 var separator = (char)blob.ReadByte();
 var sb = new StringBuilder(blob.Length * 2);

 // Read path segments
 while (true)
 {
 BlobHandle bh = blob.ReadBlobHandle();

 if (!bh.IsNil)
 {
 byte[] nameBytes = reader.GetBlobBytes(bh);
 sb.Append(Encoding.UTF8.GetString(nameBytes));
 }

 if (blob.Offset >= blob.Length) break;

 sb.Append(separator);
 }

 return sb.ToString();
}

public static void ReadPdbDocuments(string pdbPath)
{
 // Open Portable PDB file
 using var fs = new FileStream(pdbPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
 using MetadataReaderProvider provider = MetadataReaderProvider.FromPortablePdbStream(fs);
 
 MetadataReader reader = provider.GetMetadataReader();

 // Display information about documents in each MethodDebugInformation table entry
 foreach (MethodDebugInformationHandle h in reader.MethodDebugInformation)
 {
 MethodDebugInformation mdi = reader.GetMethodDebugInformation(h);

 if (mdi.Document.IsNil) continue;

 int token = MetadataTokens.GetToken(h);
 Console.WriteLine($"MethodDebugInformation 0x{token.ToString("X")}");

 Document doc = reader.GetDocument(mdi.Document);
 Console.WriteLine($"File: {ReadDocumentPath(reader, doc)}");
 Guid guidLang = reader.GetGuid(doc.Language);
 Console.WriteLine($"Language: {guidLang}");
 Guid guidHashAlg = reader.GetGuid(doc.HashAlgorithm);
 Console.WriteLine($"Hash algorithm: {guidHashAlg}");
 Console.WriteLine();
 }
}

Remarks

For more information, see Portable PDB v1.0: Format Specification.

Properties

Name Description
Hash

Gets the document content hash.

HashAlgorithm

Gets the hash algorithm used to calculate the Hash (for example, SHA-1 or SHA-256).

Language

Gets the source code language (C#, VB, F#, etc.).

Name

Gets the document name blob.

Applies to


Feedback

Was this page helpful?