IMetaDataAssemblyImport::FindAssembliesByName 方法

使用公共语言运行时 (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 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

请参见

参考

IMetaDataAssemblyImport 接口

概念

运行时如何定位程序集