public virtual AssemblyDefinition Resolve(AssemblyNameReference name, ReaderParameters parameters) { if (name == null) { throw new ArgumentNullException("name"); } if (parameters == null) { parameters = new ReaderParameters(); } AssemblyDefinition assemblyDefinition = this.SearchDirectory(name, this.directories, parameters); if (assemblyDefinition != null) { return(assemblyDefinition); } if (name.IsRetargetable) { name = new AssemblyNameReference(name.Name, Mixin.ZeroVersion) { PublicKeyToken = Empty <byte> .Array }; } string directoryName = Path.GetDirectoryName(typeof(object).Module.FullyQualifiedName); if (BaseAssemblyResolver.IsZero(name.Version)) { assemblyDefinition = this.SearchDirectory(name, new string[] { directoryName }, parameters); if (assemblyDefinition != null) { return(assemblyDefinition); } } if (name.Name == "mscorlib") { assemblyDefinition = this.GetCorlib(name, parameters); if (assemblyDefinition != null) { return(assemblyDefinition); } } assemblyDefinition = this.GetAssemblyInGac(name, parameters); if (assemblyDefinition != null) { return(assemblyDefinition); } assemblyDefinition = this.SearchDirectory(name, new string[] { directoryName }, parameters); if (assemblyDefinition != null) { return(assemblyDefinition); } if (this.ResolveFailure != null) { assemblyDefinition = this.ResolveFailure(this, name); if (assemblyDefinition != null) { return(assemblyDefinition); } } throw new AssemblyResolutionException(name); }
private AssemblyDefinition GetCorlib(AssemblyNameReference reference, ReaderParameters parameters) { Version version = reference.Version; AssemblyName name = typeof(object).Assembly.GetName(); if (name.Version == version || BaseAssemblyResolver.IsZero(version)) { return(this.GetAssembly(typeof(object).Module.FullyQualifiedName, parameters)); } string path = Directory.GetParent(Directory.GetParent(typeof(object).Module.FullyQualifiedName).FullName).FullName; if (!BaseAssemblyResolver.on_mono) { switch (version.Major) { case 1: if (version.MajorRevision == 3300) { path = Path.Combine(path, "v1.0.3705"); goto IL_170; } path = Path.Combine(path, "v1.0.5000.0"); goto IL_170; case 2: path = Path.Combine(path, "v2.0.50727"); goto IL_170; case 4: path = Path.Combine(path, "v4.0.30319"); goto IL_170; } throw new NotSupportedException("Version not supported: " + version); } if (version.Major == 1) { path = Path.Combine(path, "1.0"); } else { if (version.Major == 2) { if (version.MajorRevision == 5) { path = Path.Combine(path, "2.1"); } else { path = Path.Combine(path, "2.0"); } } else { if (version.Major != 4) { throw new NotSupportedException("Version not supported: " + version); } path = Path.Combine(path, "4.0"); } } IL_170: string text = Path.Combine(path, "mscorlib.dll"); if (File.Exists(text)) { return(this.GetAssembly(text, parameters)); } return(null); }