Compartir a través de


IMetaDataEmit::GetSaveSize (Método)

Obtiene el tamaño binario estimado del ensamblado y sus metadatos en el ámbito actual.

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

Parámetros

  • fSave
    [in] Valor de la enumeración CorSaveSize que especifica si se va a obtener un tamaño preciso o aproximado. Sólo hay tres valores válidos: cssAccurate, cssQuick y cssDiscardTransientCAs:

    • cssAccurate devuelve el tamaño de almacenamiento exacto, pero tarda más tiempo en calcularlo.

    • cssQuick devuelve un tamaño con relleno por motivos de seguridad, pero tarda menos tiempo en calcularlo.

    • cssDiscardTransientCAs indica a GetSaveSize que puede omitir los atributos personalizados descartables.

  • pdwSaveSize
    [out] Puntero al tamaño requerido para guardar el archivo.

Comentarios

GetSaveSize calcula el espacio en bytes requerido para guardar el ensamblado y todos sus metadatos en el ámbito actual. (Una llamada al método IMetaDataEmit::SaveToStream emitiría este número de bytes.)

Si el llamador implementa la interfaz IMapToken (a través de IMetaDataEmit::SetHandler o IMetaDataEmit::Merge), GetSaveSize procesará dos veces los metadatos para optimizarlos y comprimirlos. De lo contrario, no se realiza ninguna optimización.

Si se realiza la optimización, el primer paso simplemente ordena las estructuras de los metadatos para ajustar el rendimiento de las búsquedas en tiempo de importación. Este paso normalmente produce un desplazamiento de registros, con el efecto secundario de que los símbolos (token) guardados por la herramienta para futuras referencias se invalidan. No obstante, los metadatos no informan al llamador de estos cambios en los símbolos hasta después del segundo paso. En el segundo paso, se realizan varias optimizaciones orientadas a reducir el tamaño global de los metadatos; por ejemplo, se optimizan los símbolos mdTypeRef y mdMemberRef (enlace en tiempo de compilación) cuando la referencia es a un tipo o miembro declarado en el actual ámbito de los metadatos. En este paso, se produce otra ronda de asignación de símbolos (token). Después, el motor de metadatos notifica al llamador, a través de su interfaz IMapToken, cualquier cambio en el valor de los símbolos (token).

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: Cor.h

Biblioteca: se usa como recurso en MSCorEE.dll

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1

Vea también

Referencia

IMetaDataEmit (Interfaz)

IMetaDataEmit2 (Interfaz)