Бөлісу құралы:


ICorProfilerCallback6::GetAssemblyReferences Method

[Поддерживается в .NET Framework 4.5.2 и более поздних версиях]

Уведомляет профилировщика о том, что сборка находится на очень ранней стадии загрузки, когда среда CLR выполняет пошаговое закрытие ссылки на сборку.

Syntax

HRESULT GetAssemblyReferences(        [in, string] const WCHAR* wszAssemblyPath,
        [in] ICorProfilerAssemblyReferenceProvider* pAsmRefProvider
);

Parameters

wszAssemblyPath [in] Путь и имя сборки, метаданные которой будут изменены.

pAsmRefProvider [in] Указатель на адрес интерфейса ICorProfilerAssemblyReferenceProviderer , указывающий ссылки на сборку для добавления.

Return Value

Возвращаемые значения из этого обратного вызова игнорируются.

Remarks

Этот обратный вызов управляется путем установки флага маски событий COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES при вызове метода ICorProfilerCallback5::SetEventMask2 . Если профилировщик регистрирует метод обратного вызова ICorProfilerCallback6::GetAssemblyReferences , среда выполнения передает путь и имя сборки для загрузки, а также указатель на объект интерфейса ICorProfilerAssemblyReferenceProvider на этот метод. Затем профилировщик может вызвать метод ICorProfilerAssemblyReferenceProviderer::AddAssemblyReference с объектом для каждой целевой COR_PRF_ASSEMBLY_REFERENCE_INFO сборки, которую он планирует ссылаться из сборки, указанной в обратном вызове GetAssemblyReferences .

Используйте обратный GetAssemblyReferences вызов, только если профилировщик должен изменить метаданные сборки для добавления ссылок на сборку. (Но обратите внимание, что фактическое изменение метаданных сборки выполняется в методе обратного вызова ICorProfilerCallback::ModuleLoadFinished.) Профилировщик должен реализовать GetAssemblyReferences метод обратного вызова, чтобы сообщить среде CLR, что ссылки на сборки будут добавлены при загрузке модуля. Это помогает гарантировать, что решения о совместном использовании сборок, принятые средой CLR на этом раннем этапе, остаются действительными, хотя профилировщик планирует изменить ссылки на сборку метаданных позже. Это может избежать некоторых экземпляров, в которых изменения метаданных профилировщика вызывают ошибку SECURITY_E_INCOMPATIBLE_SHARE .

Профилировщик использует объект ICorProfilerAssemblyReferenceProviderer , предоставленный этим методом, чтобы добавить ссылки на сборки в пошаговое руководство по закрытию ссылок на сборку CLR. Объект ICorProfilerAssemblyReferenceProvider следует использовать только из этого обратного вызова. Вызовы метода ICorProfilerAssemblyReferenceProviderer::AddAssemblyReference из этого обратного вызова не приводят к измененным метаданным, но только в пошаговом руководстве по закрытию ссылок на сборку. Профилировщику по-прежнему придется использовать объект IMetaDataAssemblyEmit для явного добавления ссылок на сборку ICorProfilerCallback::ModuleLoadFinished обратного вызова для сборки ссылок, даже если она реализует обратный GetAssemblyReferences вызов.

Профилировщик должен быть готов к получению повторяющихся вызовов для этой же сборки и должен отвечать одинаково для каждого такого повторяющегося вызова (делая тот же набор вызовов ICorProfilerAssemblyReferenceProviderer::AddAssemblyReference ).

Requirements

Платформы: см. раздел Требования к системе.

Заголовок: CorProf.idl, CorProf.h

Library: CorGuids.lib

Версии .NET Framework: Доступно с версии 4.5.2

See also