/// <summary> /// Gets access to metadata of running process. /// </summary> /// <param name="mod">Debugged module.</param> /// <param name="emitter">Emitter access to metadata.</param> /// <param name="importer">Importer access to metadata.</param> private void getInterfaces(ICorDebugModule2 mod) { Object objEmitter; Object objImporter; ((ICorDebugModule)mod).__GetMetaDataInterface(ref emitterIID, out objEmitter); ((ICorDebugModule)mod).__GetMetaDataInterface(ref importerIID, out objImporter); oldEmitter = new MetaDataEmitter(createEmitterCopy((IMetaDataEmit)objEmitter)); oldImporter = new MetaDataImporter((IMetaDataImport)objEmitter); }
/// <summary> /// Updates metadata for both old and new assembly /// </summary> public void Update() { if (!oldMetadataLoaded) { getInterfaces(manager.ResourceManager.CurrentModule.CorModule2); oldMetadataLoaded = true; } else { oldEmitter.CorMetaDataEmit.ResetENCLog(); ClearTokenCache(); } newImporter = new MetaDataImporter(createImporter(manager.ResourceManager.NewAssemblyPath)); }
/// <summary> /// Updates metadata for both old and new assembly /// </summary> public void Update() { if(!oldMetadataLoaded){ getInterfaces(manager.ResourceManager.CurrentModule.CorModule2); oldMetadataLoaded = true; } else { oldEmitter.CorMetaDataEmit.ResetENCLog(); ClearTokenCache(); } newImporter = new MetaDataImporter(createImporter(manager.ResourceManager.NewAssemblyPath)); }