Método IMetaDataEmit::GetSaveSize
Obtém o tamanho binário estimado da assemblagem e os respetivos metadados no âmbito atual.
Sintaxe
HRESULT GetSaveSize (
[in] CorSaveSize fSave,
[out] DWORD *pdwSaveSize
);
Parâmetros
fSave
[in] Um valor da enumeração CorSaveSize que especifica se pretende obter um tamanho preciso ou aproximado. Apenas três valores são válidos: cssAccurate, cssQuick e cssDiscardTransientCAs:
cssAccurate devolve o tamanho de poupança exato, mas demora mais tempo a calcular.
cssQuick devolve um tamanho, acolchoado por segurança, mas demora menos tempo a calcular.
cssDiscardTransientCAs indica
GetSaveSize
que pode deitar fora atributos personalizados elimináveis.
pdwSaveSize
[fora] Um ponteiro para o tamanho necessário para guardar o ficheiro.
Observações
GetSaveSize
calcula o espaço necessário, em bytes, para guardar a assemblagem e todos os metadados no âmbito atual. (Uma chamada para o método IMetaDataEmit::SaveToStream emitiria este número de bytes.)
Se o autor da chamada implementar a interface IMapToken (através de IMetaDataEmit::SetHandler ou IMetaDataEmit::Merge), GetSaveSize
efetuará dois passes sobre os metadados para o otimizar e comprimir. Caso contrário, não são realizadas otimizações.
Se a otimização for realizada, o primeiro passe ordena simplesmente as estruturas de metadados para otimizar o desempenho das pesquisas de tempo de importação. Normalmente, este passo resulta na movimentação de registos, com o efeito colateral de que os tokens retidos pela ferramenta para referência futura são invalidados. No entanto, os metadados só informam o autor da chamada destas alterações de token após a segunda passagem. No segundo passe, são realizadas várias otimizações que se destinam a reduzir o tamanho geral dos metadados, como otimizar (enlace antecipado) mdTypeRef
e mdMemberRef
tokens quando a referência se destina a um tipo ou membro declarado no âmbito de metadados atual. Neste passe, ocorre outra ronda de mapeamento de tokens. Após esta passagem, o motor de metadados notifica o autor da chamada, através da respetiva IMapToken
interface, de quaisquer valores de token alterados.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: Cor.h
Biblioteca: Utilizado como recurso no MSCorEE.dll
.NET Framework Versões: Disponível desde a 1.1