datadog-ci adds ppdb-symbols upload for .NET MAUI
Introduced 2026-10-07 · score 0.98
HOW TO USE IT
When uploading .NET MAUI Portable PDBs for managed C# exception symbolication, set `DATADOG_API_KEY` in the environment or `apiKey` in `datadog-ci.json`. Run `datadog-ci ppdb-symbols upload <location> --debug-id-manifest <path>` with the build-time manifest from `dd-sdk-maui`.
datadog-ci ppdb-symbols upload <location> --debug-id-manifest <path>DATADOG_API_KEY=<api-key> datadog-ci ppdb-symbols upload <location> --debug-id-manifest <path>{"apiKey":"<api-key>"}WHY THIS HELPS
Upload Portable PDB symbols from a .NET MAUI build so managed C# exceptions can be symbolicated.
REQUIREMENTS AND LIMITATIONS
- Version: v5.25.0
- `<location>` (required): One or more directories or file paths; directories are scanned recursively for `.pdb` files.
- `--debug-id-manifest <path>` (required): Path to manifest JSON (for example, `dd_debug_ids.json`) mapping assembly names to hex-encoded debug IDs.
- `DATADOG_API_KEY` / `apiKey` (required): API key used to authenticate requests; provide as environment variable or `datadog-ci.json` field. These are alternative ways to supply the key.
- `DD_SITE`: Datadog site for upload; defaults to `datadoghq.com`.
- Prerequisite: Set `DATADOG_API_KEY` or add it to `datadog-ci.json` as `apiKey`; the API key is required for authentication.
- Prerequisite: Use the build-time debug ID manifest generated by `dd-sdk-maui` to match PDB files to assembly debug IDs.
- A PDB without a matching manifest entry is skipped with a warning.
- An assembly name matching two manifest entries only by case is rejected.
- Backend acceptance of the `dotnet_portable_pdb` metadata type is tracked separately and is not part of this PR.
FIRST-PARTY EVIDENCE
- https://github.com/DataDog/datadog-ci/releases/tag/v5.25.0
- https://github.com/DataDog/datadog-ci/pull/2491
- https://github.com/DataDog/datadog-ci/blob/v5.25.0/packages/base/src/commands/ppdb-symbols/README.md
Check the installed version and the source before using it. Entry JSON