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::SetHandlerIMetaDataEmit::Merge),则 GetSaveSize 将对元数据执行两次传递,以对其进行优化和压缩。 否则,将不执行任何优化。

如果执行优化,则第一次传递只对元数据结构排序,以优化导入时搜索的性能。 此步骤通常会导致发生记录移动,从而带来以下副作用:工具保留的供将来引用的标记变为无效。 但是,只有在第二次传递后,元数据才会通知调用方这些标记更改。 在第二次传递中,将执行各种旨在减小元数据整体大小的优化,例如当引用指向当前元数据范围内声明的类型或成员时通过去除(早期绑定)mdTypeRefmdMemberRef 标记进行优化。 在此次传递中,将发生另一轮标记映射。 在此次传递完成后,元数据引擎将通过其 IMapToken 接口通知调用方有关标记值的任何更改。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**Cor.h

**库:**在 MSCorEE.dll 中用作资源

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1

请参见

参考

IMetaDataEmit 接口

IMetaDataEmit2 接口