IMetaDataEmit::GetSaveSize Method

获取程序集及其元数据在当前范围内估计的二进制大小。

Syntax

HRESULT GetSaveSize (
    [in]  CorSaveSize fSave,
    [out] DWORD       *pdwSaveSize
);

Parameters

fSave [in] CorSaveSize 枚举的值,指定是获取准确大小还是近似大小。 只有三个值有效:cssAccurate、cssQuick 和 cssDiscardTransientCAs:

  • cssAccurate 返回确切的保存大小,但计算需要更长的时间。

  • cssQuick 返回一个大小,填充安全,但需要更少的时间来计算。

  • cssDiscardTransientCAs 告知 GetSaveSize 它可以丢弃可丢弃的自定义属性。

pdwSaveSize [out]指向保存文件所需的大小的指针。

Remarks

GetSaveSize 计算在当前作用域中保存程序集及其所有元数据所需的空间(以字节为单位)。 (对 IMetaDataEmit::SaveToStream 方法的调用将发出此字节数。

如果调用方实现 IMapToken 接口(通过 IMetaDataEmit::SetHandlerIMetaDataEmit::Merge), GetSaveSize 将执行两次传递,以优化和压缩元数据。 否则,不执行任何优化。

如果执行优化,则第一个传递只需对元数据结构进行排序,以优化导入时搜索的性能。 此步骤通常会导致移动记录,工具保留的令牌以供将来引用的副作用失效。 但是,在经过第二次传递之前,元数据不会通知调用方这些令牌更改。 在第二次传递中,执行各种优化,旨在减小元数据的总体大小,例如在引用当前元数据范围中声明的类型或成员时优化(早期绑定) mdTypeRefmdMemberRef 标记。 在此传递中,将发生另一轮令牌映射。 此传递后,元数据引擎会通过其 IMapToken 接口通知调用方任何已更改的令牌值。

Requirements

平台: 请参阅 .NET 支持的作系统

Header: Cor.h

Library: CorGuids.lib

See also