Partager via


IMetaDataEmit::GetSaveSize, méthode

Obtient la taille binaire estimée de l'assembly et de ses métadonnées dans la portée actuelle.

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

Paramètres

  • fSave
    [in] Valeur de l'énumération CorSaveSize qui spécifie s'il faut obtenir une taille exacte ou approximative. Seules trois valeurs sont valides : cssAccurate, cssQuick et cssDiscardTransientCAs :

    • cssAccurate retourne la taille d'enregistrement exacte, mais le calcul est plus long.

    • cssQuick retourne une taille, remplie pour la sécurité, mais le calcul est plus rapide.

    • cssDiscardTransientCAs indique à GetSaveSize qu'il peut éliminer les attributs personnalisés discardable (pouvant être supprimés).

  • pdwSaveSize
    [out] Pointeur vers la taille qui est requise pour enregistrer le fichier.

Notes

GetSaveSize calcule l'espace requis, en octets, pour enregistrer l'assembly et toutes ses métadonnées dans la portée actuelle. (Un appel à la méthode IMetaDataEmit::SaveToStream émet ce nombre d'octets.)

Si l'appelant implémente l'interface IMapToken (via IMetaDataEmit::SetHandler ou IMetaDataEmit::Merge), GetSaveSize exécutera deux passages sur les métadonnées pour les optimiser et les compresser. Sinon, aucune optimisation n'est exécutée.

Si l'optimisation est exécutée, le premier passage trie simplement les structures de métadonnées pour ajuster la performance des recherches au moment de l'importation. En général, cette étape provoque le déplacement des enregistrements, avec comme effet secondaire l'invalidation des jetons conservés par l'outil pour un usage futur. Toutefois, les métadonnées n'informent l'appelant de la modification de ces jetons qu'après le deuxième passage. Lors du deuxième passage, plusieurs optimisations sont exécutées ; elles ont pour but de réduire la taille globale des métadonnées, comme l'optimisation (liaison anticipée) des jetons mdTypeRef et mdMemberRef lorsque la référence renvoie à un type ou un membre qui est déclaré dans la portée de métadonnées actuelle. Pendant ce passage, une autre série de mappages de jetons se produit. Après ce passage, le moteur de métadonnées informe l'appelant, via son interface IMapToken, des valeurs de jeton modifiées.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : Cor.h

Bibliothèque : utilisée en tant que ressource dans MSCorEE.dll

Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1

Voir aussi

Référence

IMetaDataEmit, interface

IMetaDataEmit2, interface