Skip to content

Consider switching from Windows PDB (DebugType full/pdbonly) to portable PDB #11643

@ericstj

Description

@ericstj

Summary

WPF explicitly sets DebugType to full (Debug) / pdbonly (Release) for all managed projects via eng/WpfArcadeSdk/Sdk/Sdk.props:

<DebugType>full</DebugType>
<DebugType Condition="'$(Configuration)'=='Release'">pdbonly</DebugType>

This means all 70 WPF C# compilations produce Windows-native PDBs instead of portable PDBs.

Why this matters

  1. Source indexing: The source indexer uses ReadGeneratedFilesFromPdb (from complog) to extract source-generator output and include it in the source index at https://source.dot.net. This API only works with portable PDBs. As a result, all source-generated code in WPF (XAML-generated InitializeComponent(), etc.) is missing from the source index. See BinLogToSln warning for projects using non-portable PDB format source-indexer#256.

  2. Ecosystem alignment: The rest of dotnet uses portable PDBs. The .NET symbol pipeline already handles converting portable PDBs to Windows PDBs for native debugging scenarios — so portable PDBs don't prevent Windows-native debugging.

Recommendation

Consider switching WPF to <DebugType>portable</DebugType> (or removing the override to use the SDK default, which is portable). The .NET symbol pipeline can produce Windows PDBs from portable PDBs for any native debugging needs.

cc @tommcdon @hoyosjs — would appreciate your thoughts on whether there's a specific reason WPF needs Windows-native PDBs, or if this is a legacy setting that could be updated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions