Symbol API (CorSym.idl) for managed PDBs

From the mailbag:
     Just wanted to know if there are plans to ever give us world citizens an API to modify & emit pdb files, at least for managed assemblies.
 
 Good news. You've already got them.
 1) The CorSym.idl API (exists in sdk, next to where you find CorDebug.idl) is a com-classic API that can read and write managed pdbs.  Steve (who used to own this) tells me this API is sufficiently complete to complete read and write a PDB file.
 2) Cordbg and MDbg both use this API to read pdbs for debugging. You can look at these as examples for how to read these PDBs. Unfortunately, I'm not aware of any good public examples for how to use this API to write PDBs.  ILasm will use this API to produce PDBs, but I don't think the source for ILasm is public (I haven't checked if Rotor has this).
 3) There are some basic managed wrappers defined in mscorlib that allow reflection-emit to specify some debugging information. These wrappers are incomplete, and should never have existed.
 4) MDbg has some more advanced wrappers for the symbol interfaces. Since we can revise the MDbg sample much more quickly then we can revise the product, these wrappers are probably the best ones to use. I have a C# tool that uses these managed wrappers to dump a managed pdb as an xml file. I'd like to eventually make the tool complete enough that it can completely round-trip a PDB --> XML --> PDB file. We first need to improve the managed wrappers because they're currently targeted at just reading PDBs and not so much writing PDBs.