Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt alle Metadatenbereiche, die von einem oder mehreren vorherigen Aufrufen von IMetaDataEmit::Merge angegeben wurden, mit dem aktuellen Bereich zusammen.
Syntax
HRESULT MergeEnd ();
Parameters
Diese Methode akzeptiert keine Parameter.
Remarks
Diese Routine löst die tatsächliche Zusammenführung von Metadaten aus, von allen Importbereichen, die durch vorangehende Aufrufe IMetaDataEmit::Mergeangegeben wurden, in den aktuellen Ausgabebereich.
Die folgenden speziellen Bedingungen gelten für den Seriendruck:
Ein Modulversionsbezeichner (MVID) wird nie importiert, da er für die Metadaten im Importbereich eindeutig ist.
Es werden keine vorhandenen modulweiten Eigenschaften überschrieben.
Wenn moduleigenschaften bereits für den aktuellen Bereich festgelegt wurden, werden keine Moduleigenschaften importiert. Wenn moduleigenschaften jedoch nicht im aktuellen Bereich festgelegt wurden, werden sie nur einmal importiert, wenn sie zum ersten Mal gefunden werden. Wenn diese Moduleigenschaften erneut gefunden werden, handelt es sich um Duplikate. Wenn die Werte aller Moduleigenschaften (mit Ausnahme von MVID) verglichen werden und keine Duplikate gefunden werden, wird ein Fehler ausgelöst.
Für Typdefinitionen (
TypeDef) werden keine Duplikate mit dem aktuellen Bereich zusammengeführt.TypeDefObjekte werden auf Duplikate für jede vollqualifizierte Objektnamen-GUID-Versionsnummer + + überprüft. Wenn eine Übereinstimmung für den Namen oder die GUID vorhanden ist und eines der anderen beiden Elemente unterschiedlich ist, wird ein Fehler ausgelöst. Andernfalls wird bei ÜbereinstimmungenMergeEndaller drei Elemente eine Cursorüberprüfung zum Sicherstellen, dass die Einträge tatsächlich dupliziert sind. Andernfalls wird ein Fehler ausgelöst. Diese Cursorprüfung sucht nach:Die gleichen Memberdeklarationen, die in derselben Reihenfolge ausgeführt werden. Elemente, die als
mdPrivateScope" CorMethodAttr "-Aufzählung gekennzeichnet sind, sind in dieser Überprüfung nicht enthalten. Sie werden speziell zusammengeführt.Das gleiche Klassenlayout.
Dies bedeutet, dass ein
TypeDefObjekt immer vollständig und konsistent in jedem Metadatenbereich definiert werden muss, in dem es deklariert wird. Wenn seine Memberimplementierungen (für eine Klasse) über mehrere Kompilierungseinheiten verteilt sind, wird davon ausgegangen, dass die vollständige Definition in jedem Bereich und nicht inkrementell zu jedem Bereich vorhanden ist. Wenn z. B. Parameternamen für den Vertrag relevant sind, müssen sie in jedem Bereich auf die gleiche Weise ausgegeben werden; wenn sie nicht relevant sind, sollten sie nicht in Metadaten ausgegeben werden.Die Ausnahme besteht darin, dass ein
TypeDefObjekt inkrementelle Member als gekennzeichnetmdPrivateScopehaben kann. Bei dieserMergeEndBegegnung werden sie inkrementell inkrementell in den aktuellen Bereich ohne Rücksicht auf Duplikate hinzugefügt. Da der Compiler den privaten Bereich versteht, muss der Compiler für die Erzwingung von Regeln verantwortlich sein.Relative virtuelle Adressen (RVAs) werden nicht importiert oder zusammengeführt; Es wird erwartet, dass der Compiler diese Informationen erneut ausgibt.
Benutzerdefinierte Attribute werden nur zusammengeführt, wenn das Element, dem sie angefügt sind, zusammengeführt wird. Benutzerdefinierte Attribute, die einer Klasse zugeordnet sind, werden beispielsweise zusammengeführt, wenn die Klasse zum ersten Mal gefunden wird. Wenn benutzerdefinierte Attribute einer
TypeDefKompilierungseinheitMemberDef(z. B. dem Zeitstempel eines Memberkompilierungselements) zugeordnet sind, werden sie nicht zusammengeführt und müssen vom Compiler entfernt oder aktualisiert werden.
Requirements
Plattformen: Siehe .NET unterstützte Betriebssysteme.
Header: Cor.h
Library: CorGuids.lib