Метод IMetaDataEmit::GetSaveSize
Получает расчетный двоичный размер сборки и ее метаданных в текущей области.
HRESULT GetSaveSize (
[in] CorSaveSize fSave,
[out] DWORD *pdwSaveSize
);
Параметры
fSave
[in] Значение перечисления CorSaveSize, позволяющее определить, какой размер (точный или приблизительный) необходимо получить. Допустимы только три значения: cssAccurate, cssQuick и cssDiscardTransientCAs:cssAccurate возвращает точный размер сохранения, однако требует больше времени для вычисления;
cssQuick возвращает дополненный для безопасности размер, но требует меньше времени для вычисления;
cssDiscardTransientCAs указывает методу GetSaveSize, что он может отбросить подлежащие удалению настраиваемые атрибуты;
pdwSaveSize
[out] Указатель на размер, необходимый для сохранения файла.
Заметки
Метод GetSaveSize вычисляет размер (в байтах), необходимый для сохранения сборки со всеми ее метаданными в текущей области. (Это количество байтов будет выдано при вызове метода IMetaDataEmit::SaveToStream.)
Если вызывающий объект реализует интерфейс IMapToken (посредством методов IMetaDataEmit::SetHandler или IMetaDataEmit::Merge), метод GetSaveSize будет выполнять две передачи метаданных для их оптимизации и сжатия. В противном случае оптимизация не выполняется.
Если оптимизация выполнена, при первой передаче выполняется только сортировка структур метаданных с целью повышения производительности поиска во время импорта. Обычно этот шаг приводит к перемещению записей относительно друг друга, побочным эффектом чего является объявление недействительным маркеров, сохраненных средством для использования в будущем. Однако метаданные не уведомляют вызывающий объект об этих изменениях маркера до выполнения второй передачи. При второй передаче выполняются различные операции рефакторинга, призванные снизить общий размер метаданных, например оптимизация (ранняя привязка) маркеров mdTypeRef и mdMemberRef, если ссылка указывает на тип или член, объявленный в текущей области метаданных. При этой передаче выполняется еще один цикл сопоставления маркеров. После этой передачи ядро метаданных уведомляет вызывающий объект посредством интерфейса IMapToken обо всех изменениях значений маркера.
Требования
Платформы: см. раздел Требования к системе для .NET Framework.
Заголовок: Cor.h
Библиотека: используется как ресурс в MSCorEE.dll
Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0, 1.1