IMetaDataAssemblyImport::FindAssembliesByName 方法

更新:2007 年 11 月

使用公共语言运行库 (CLR) 用于解析引用的标准规则获取具有指定 szAssemblyName 参数的程序集的数组。

HRESULT FindAssembliesByName (
    [in]  LPCWSTR     szAppBase, 
    [in]  LPCWSTR     szPrivateBin, 
    [in]  LPCWSTR     szAssemblyName, 
    [out] IUnknown    *ppIUnk[], 
    [in]  ULONG       cMax, 
    [out] ULONG       *pcAssemblies
);

参数

  • szAppBase
    [in] 要在其中搜索给定程序集的根目录。如果将此值设置为 null,FindAssembliesByName 将仅在全局程序集缓存中搜索该程序集。

  • szPrivateBin
    [in] 一个由分号分隔的列表,其中列出要在根目录下搜索程序集的子目录(例如“bin;bin2”)。除了在默认探测规则中指定的目录外,还会在这些目录中进行探测。

  • szAssemblyName
    [in] 要查找的程序集的名称。此字符串的格式在 AssemblyName 的类引用页中定义。

  • ppIUnk
    [in] 要向其中放置 IMetadataAssemblyImport 接口指针的 IUnknown 类型的数组。

  • cMax
    [out] 可以在 ppIUnk 中放置的接口指针的最大数目。

  • pcAssemblies
    [out] 返回的接口指针数。即,在 ppIUnk 中实际放置的接口指针数。

返回值

HRESULT

说明

S_OK

成功返回 FindAssembliesByName

S_FALSE

没有程序集。

备注

在给定程序集名称的情况下,FindAssembliesByName 方法将按照解析程序集引用的标准规则来查找该程序集(有关更多信息,请参见运行库如何定位程序集)。FindAssembliesByName 允许调用方配置程序集解析程序上下文的各个方面,例如应用程序基和专用搜索路径。

FindAssembliesByName 方法要求在进程中初始化 CLR,因为只有这样才能调用程序集解析逻辑。因此,必须先调用 CoInitializeEE(传递 COINITEE_DEFAULT),再调用 FindAssembliesByName,然后调用 CoUninitializeCor

FindAssembliesByName 将返回一个 IMetaDataImport 指针,该指针指向的文件包含传入的程序集名称的程序集清单。如果给定的程序集名称未得到完整指定(例如,如果该名称不包括版本),则可能会返回多个程序集。

当编译器尝试在编译时查找引用的程序集时,通常使用 FindAssembliesByName

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**Cor.h

**库:**在 MsCorEE.dll 中用作资源

**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

请参见

概念

运行库如何定位程序集

参考

IMetaDataAssemblyImport