MetadataAssemblyResolver.Resolve(MetadataLoadContext, AssemblyName) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
根据给定程序集名称返回程序集。
public:
abstract System::Reflection::Assembly ^ Resolve(System::Reflection::MetadataLoadContext ^ context, System::Reflection::AssemblyName ^ assemblyName);
public abstract System.Reflection.Assembly? Resolve (System.Reflection.MetadataLoadContext context, System.Reflection.AssemblyName assemblyName);
abstract member Resolve : System.Reflection.MetadataLoadContext * System.Reflection.AssemblyName -> System.Reflection.Assembly
Public MustOverride Function Resolve (context As MetadataLoadContext, assemblyName As AssemblyName) As Assembly
参数
- context
- MetadataLoadContext
元数据加载上下文对象,表示为仅供检查目的而加载的 Type 对象的封闭范围。
- assemblyName
- AssemblyName
程序集的名称。
返回
提供的 assemblyName
的程序集。
注解
当调用 时或一个程序集中的类型依赖于另一个程序集时 LoadFromAssemblyName ,将程序集名称绑定到程序集。 重写的 Resolve
处理程序应使用 MetadataLoadContext.LoadFromStream或 MetadataLoadContext.LoadFromAssemblyPathMetadataLoadContext.LoadFromByteArray 来加载请求的程序集并返回它。
若要指示未能找到程序集,处理程序应返回 null
而不是引发异常。
null
返回 将提交失败,以便将来加载该名称的尝试将失败,而无需重新调用处理程序。
如果处理程序引发异常,则异常将传递到调用触发绑定的操作的应用程序。 MetadataLoadContext不会捕获它,并且不会发生绑定。
处理程序通常不会多次调用同一名称,除非两个线程争用加载同一程序集。 即使在这种情况下,一个结果也会获胜,并且以原子方式绑定到名称。
有意 MetadataLoadContext 不对返回的程序集执行 ref-def 匹配,因为构成 ref-def 匹配的是策略。 这也是努力避免的任意限制 MetadataLoadContext 。
MetadataLoadContext不能使用来自其他元数据加载上下文或其他类型提供程序的程序集, (例如基础运行时自己的反射系统) 。 如果处理程序返回此类程序集,则会MetadataLoadContextFileLoadException引发 。