Compartir a través de


Document Estructura

Definición

Documento de origen en los metadatos de depuración.

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

Ejemplos

En este ejemplo se muestra cómo mostrar información sobre los documentos de origen en el archivo PDB portable:

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();
    }
}

Comentarios

Para más información, consulte el artículo sobre la especificación del formato PDB portable v1.0.

Propiedades

Hash

Obtiene el hash de contenido del documento.

HashAlgorithm

Obtiene el algoritmo hash usado para calcular Hash (SHA1, SHA256, etc.).

Language

Obtiene el lenguaje de código fuente (C#, VB, F#, etc.).

Name

Obtiene el blob de nombre de documento.

Se aplica a