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 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1