public static ISymbolWriter CreateWriter(string assembly, string pdb)
{
SymWriter writer = new SymWriter(false);
object objDispenser, objImporter;
CoCreateInstance(ref s_dispenserClassID, null, 1, ref s_dispenserIID, out objDispenser);
IMetaDataDispenser dispenser = (IMetaDataDispenser)objDispenser;
dispenser.OpenScope(assembly, 1, ref s_importerIID, out objImporter);
IntPtr importerPtr = Marshal.GetComInterfaceForObject(objImporter, typeof(IMetadataImport));
try {
if (File.Exists(pdb))
{
File.Delete(pdb);
}
writer.Initialize(importerPtr, pdb, false);
} finally {
if (importerPtr != IntPtr.Zero)
{
Marshal.Release(importerPtr);
Marshal.ReleaseComObject(objDispenser);
Marshal.ReleaseComObject(objImporter);
Marshal.ReleaseComObject(dispenser);
}
}
return(writer);
}