public virtual AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (parameters == null)
{
parameters = new ReaderParameters();
}
AssemblyDefinition corlib = this.SearchDirectory(name, this.directories, parameters);
if (corlib != null)
{
return(corlib);
}
if (name.IsRetargetable)
{
name = new AssemblyNameReference(name.Name, new Version(0, 0, 0, 0))
{
PublicKeyToken = Empty <byte> .Array
};
}
string directoryName = Path.GetDirectoryName(typeof(object).Module.FullyQualifiedName);
if (BaseAssemblyResolver.IsZero(name.Version))
{
corlib = this.SearchDirectory(name, new string[] { directoryName }, parameters);
if (corlib != null)
{
return(corlib);
}
}
if (name.Name == "mscorlib")
{
corlib = this.GetCorlib(name, parameters);
if (corlib != null)
{
return(corlib);
}
}
corlib = this.GetAssemblyInGac(name, parameters);
if (corlib != null)
{
return(corlib);
}
corlib = this.SearchDirectory(name, new string[] { directoryName }, parameters);
if (corlib != null)
{
return(corlib);
}
if (this.ResolveFailure != null)
{
corlib = this.ResolveFailure(this, name);
if (corlib != null)
{
return(corlib);
}
}
throw new AssemblyResolutionException(name);
}