다음을 통해 공유


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::SetHandler 또는 IMetaDataEmit::Merge를 통해 IMapToken 인터페이스를 구현하는 경우 GetSaveSize는 메타데이터에 대해 두 개의 전달을 수행하여 메타데이터를 최적화하고 압축합니다. 그렇지 않은 경우에는 최적화가 수행되지 않습니다.

최적화가 수행되는 경우 첫 번째 전달에서는 단순히 메타데이터 구조체를 정렬하여 가져올 때의 검색 성능을 조정합니다. 이 단계에서는 일반적으로 레코드가 이동되며 그 결과 나중에 참조하기 위해 도구에서 유지하고 있는 토큰이 무효화될 수 있습니다. 그러나 메타데이터에서는 두 번째 전달이 완료될 때까지는 이러한 토큰 변경 사항을 호출자에 알리지 않습니다. 두 번째 전달에서는 현재 메타데이터 범위에 선언된 형식이나 멤버를 참조할 때 mdTypeRefmdMemberRef 토큰에 대한 최적화(초기 바인딩)를 수행하는 등 메타데이터의 전체 크기를 줄이기 위한 다양한 최적화 작업이 수행됩니다. 이 전달에서 또 다른 토큰 매핑이 발생합니다. 이 전달 후 메타데이터 엔진에서는 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

참고 항목

참조

IMetaDataEmit 인터페이스

IMetaDataEmit2 인터페이스