ICorProfilerCallback6::GetAssemblyReferences 方法

[.NET Framework 4.5.2 與更新版本提供支援]

當 Common Language Runtime 執行組件參考關閉查核時,通知分析工具組件處於非常早期的載入中階段。

語法

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

參數

wszAssemblyPath
[in] 要修改其中繼資料之組件的路徑及名稱。

pAsmRefProvider
[in] ICorProfilerAssemblyReferenceProvider 介面位址的指標,此介面會指定要加入的組件參考。

傳回值

忽略此回呼傳回的值。

備註

此回呼是在呼叫 ICorProfilerCallback5::SetEventMask2 方法時,藉由設定 COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES 事件遮罩旗標所控制。 若分析工具註冊 ICorProfilerCallback6::GetAssemblyReferences 回呼方法,則執行階段會將要載入之組件的路徑及名稱,以及 ICorProfilerAssemblyReferenceProvider 介面物件的指標傳遞給該方法。 然後分析工具即可針對計劃要從 GetAssemblyReferences 回呼中指定之組件參考的每個目標組件,使用 COR_PRF_ASSEMBLY_REFERENCE_INFO 物件呼叫 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 方法。

若分析工具必須修改組件的中繼資料以加入組件參考時,才能使用 GetAssemblyReferences 回呼 (但請注意,組件中繼資料的實際修改是在 ICorProfilerCallback::ModuleLoadFinished 回呼方法中完成。) 分析工具應該實作 GetAssemblyReferences 回呼方法,以通知 Common Language Runtime (CLR) 載入模組時,將會新增組件參考。 這可以確保在這早期階段由 CLR 執行的組件共用決定,即使在分析工具計劃於稍後修改中繼資料組件參考時也能保持有效性。 這可以避免一些由分析工具中繼資料修改而導致 SECURITY_E_INCOMPATIBLE_SHARE 錯誤的情況。

分析工具會使用此方法提供的 ICorProfilerAssemblyReferenceProvider 物件,將組件參考加入至 CLR 組件參考關閉查核器。 只能從此回呼中使用 ICorProfilerAssemblyReferenceProvider 物件。 從此回呼中呼叫 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 方法不會產生修改的中繼資料,只會產生修改的組件參考關閉查核。 即使實作 GetAssemblyReferences 回呼,分析工具仍必須使用 IMetaDataAssemblyEmit 物件,以明確地從參考的組件的 ICorProfilerCallback::ModuleLoadFinished 回呼中加入組件參考。

此時分析工具應該已準備好針對相同的組件接收此回呼的重複呼叫,且應能夠對每個這樣的重複呼叫 (透過建立同一組 ICorProfilerAssemblyReferenceProvider::AddAssemblyReference 呼叫) 作出相同的回應。

規格需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework版本:自 4.5.2 起可用

另請參閱