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 方法将发出此字节数。)

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

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

要求

平台:请参阅系统要求

标头:Cor.h

库:用作 MSCorEE.dll 中的资源

.NET Framework 版本:1.1 及更高版本

另请参阅