internal PDBHelper(CILAssemblyManipulator.API.EmittingArguments eArgs, String outPath) { Object writer; CoCreateInstance(ref UNMANAGED_WRITER_GUID, null, 1u, ref SYM_WRITER_GUID, out writer); this._unmanagedWriter = (ISymUnmanagedWriter2)writer; this._unmanagedDocs = new Dictionary <String, ISymUnmanagedDocumentWriter>(); this._tmpFN = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName()) + ".pdb"; this._fn = System.IO.Path.ChangeExtension(outPath, "pdb"); this._eArgs = eArgs; // Initialize writer this._unmanagedWriter.Initialize2(new MDHelper(eArgs), this._tmpFN, null, true, this._fn); // Get debug header data Int32 dbgHdrSize; ImageDebugDirectory debugDir; // Get size of debug directory this._unmanagedWriter.GetDebugInfo(out debugDir, 0, out dbgHdrSize, null); // Get the data of debug directory var debugDirContents = new byte[dbgHdrSize]; this._unmanagedWriter.GetDebugInfo(out debugDir, dbgHdrSize, out dbgHdrSize, debugDirContents); // Set information for CILAssemblyManipulator emitter var dbgInfo = new CILAssemblyManipulator.API.EmittingDebugInformation(); dbgInfo.Characteristics = debugDir.Characteristics; dbgInfo.Timestamp = debugDir.TimeDateStamp; dbgInfo.VersionMajor = debugDir.MajorVersion; dbgInfo.VersionMinor = debugDir.MinorVersion; dbgInfo.DebugType = debugDir.Type; dbgInfo.DebugData = debugDirContents; eArgs.DebugInformation = dbgInfo; }
internal MDHelper(CILAssemblyManipulator.API.EmittingArguments eArgs) { ArgumentValidator.ValidateNotNull("Emitting arguments", eArgs); this._eArgs = eArgs; }