Метод ICorProfilerCallback6::GetAssemblyReferences
[Поддерживается в .NET Framework 4.5.2 и более поздних версиях.]
Уведомляет профилировщика о том, что сборка находится на очень ранней стадии загрузки, когда среда CLR выполняет обход замыкания ссылки на сборку.
Синтаксис
HRESULT GetAssemblyReferences( [in, string] const WCHAR* wszAssemblyPath,
[in] ICorProfilerAssemblyReferenceProvider* pAsmRefProvider
);
Параметры
wszAssemblyPath
[в] Путь и имя сборки, метаданные которой будут изменены.
pAsmRefProvider
[in] Указатель на адрес интерфейса ICorProfilerAssemblyReferenceProvider, указывающий добавляемые ссылки на сборки.
Возвращаемое значение
Значения, возвращаемые из этого обратного вызова, игнорируются.
Комментарии
Для управления этим обратным вызовом устанавливается флаг маски события COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES при вызове метода ICorProfilerCallback5::SetEventMask2 . Если профилировщик регистрирует метод обратного вызова ICorProfilerCallback6::GetAssemblyReferences , среда выполнения передает путь и имя загружаемой сборки вместе с указателем на объект интерфейса ICorProfilerAssemblyReferenceProvider на этот метод. Затем профилировщик может вызвать метод ICorProfilerAssemblyReferenceProvider::AddAssemblyReference с объектом для каждой COR_PRF_ASSEMBLY_REFERENCE_INFO
целевой сборки, на которые он планирует ссылаться из сборки, указанной в обратном вызове GetAssemblyReferences
.
Используйте обратный вызов GetAssemblyReferences
, только если для добавления ссылок на сборку профилировщик должен изменить метаданные сборки. (Но обратите внимание, что фактическое изменение метаданных сборки выполняется в методе обратного вызова ICorProfilerCallback::ModuleLoadFinished.) Профилировщик должен реализовать метод обратного GetAssemblyReferences
вызова, чтобы сообщить среде CLR о том, что ссылки на сборки будут добавлены при загрузке модуля. Это гарантирует, что решения о предоставлении общего доступа к сборке, сделанные средой CLR во время этой ранней стадии, остаются в силе, хотя позже профилировщик планирует изменить ссылки на сборку метаданных. Это поможет избежать некоторых случаев, при которых модификации метаданных профилировщика приводят к ошибке SECURITY_E_INCOMPATIBLE_SHARE
.
Профилировщик использует объект ICorProfilerAssemblyReferenceProvider, предоставленный этим методом, для добавления ссылок на сборки в пошаговое руководство по закрытию ссылок на сборку CLR. Объект ICorProfilerAssemblyReferenceProvider следует использовать только из этого обратного вызова. Вызовы метода ICorProfilerAssemblyReferenceProvider::AddAssemblyReference из этого обратного вызова не приводят к изменению метаданных, а только к измененной ссылке на сборку. Профилировщику по-прежнему придется использовать объект IMetaDataAssemblyEmit для явного добавления ссылок на сборку из обратного вызова ICorProfilerCallback::ModuleLoadFinished для ссылающейся сборки, даже если он реализует обратный GetAssemblyReferences
вызов.
Профилировщик должен быть подготовлен к получению повторяющихся вызовов этого обратного вызова для одной сборки и должен отвечать одинаково для каждого такого повторяющегося вызова (путем создания одного набора вызовов ICorProfilerAssemblyReferenceProvider::AddAssemblyReference ).
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
платформа .NET Framework версии: доступно с версии 4.5.2.