IHostAssemblyManager::GetNonHostStoreAssemblies 方法
获取指向 ICLRAssemblyReferenceList 的接口指针,该参数表示主机预计公共语言运行时 (CLR) 加载的程序集列表。
语法
HRESULT GetNonHostStoreAssemblies (
[out] ICLRAssemblyReferenceList **ppReferenceList
);
参数
ppReferenceList
[out] 指向 ICLRAssemblyReferenceList
地址的指针,其中包含主机预计 CLR 加载的程序集的引用列表。
返回值
HRESULT | 说明 |
---|---|
S_OK | 已成功返回 GetNonHostStoreAssemblies 。 |
HOST_E_CLRNOTAVAILABLE | CLR 未加载到进程中,或 CLR 处于无法运行托管代码或无法成功处理调用的状态。 |
HOST_E_TIMEOUT | 调用超时。 |
HOST_E_NOT_OWNER | 调用方未持有锁。 |
HOST_E_ABANDONED | 阻塞的线程或纤程正在等待某一事件,而该事件已被取消。 |
E_FAIL | 发生未知的灾难性故障。 当方法返回 E_FAIL 时,进程中无法再使用 CLR。 后续调用承载方法会返回 HOST_E_CLRNOTAVAILABLE。 |
E_OUTOFMEMORY | 内存不足,无法创建请求 ICLRAssemblyReferenceList 的引用列表。 |
注解
CLR 使用以下一组准则来解析引用:
首先,它会查询由
GetNonHostStoreAssemblies
返回的程序集引用列表。如果该程序集出现在列表中,则 CLR 正常绑定该程序集。
如果程序集未出现在列表中,并且主机已提供 IHostAssemblyStore 的实现,则 CLR 将调用 IHostAssemblyStore::ProvideAssembly,以允许主机提供要绑定的程序集。
否则,CLR 无法绑定程序集。
如果主机将 ppReferenceList
设置为 null,则 CLR 首先会探测全局程序集缓存,调用 ProvideAssembly
,然后探测应用程序基以解析程序集引用。
备注
初始化后,CLR 只调用 GetNonHostStoreAssemblies
一次。 不会再次调用此方法。
要求
平台:请参阅系统要求。
标头:MSCorEE.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 2.0 起可用