// Token: 0x06000030 RID: 48 RVA: 0x00002FD4 File Offset: 0x000011D4 internal static Assembly AssemblyResolve(object sender, ResolveEventArgs args) { try { AssemblyName assemblyName = new AssemblyName(args.Name); if (!assemblyName.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) { return(null); } AssemblySatelliteResolver.IntRef intRef; bool flag = AssemblySatelliteResolver.EntryCount.GetOrAdd(assemblyName.FullName, (string _) => new AssemblySatelliteResolver.IntRef(0)).Increment() > 2 && !AssemblySatelliteResolver.ResolveCnt.TryGetValue(assemblyName.FullName, out intRef); if (flag) { AssemblySatelliteResolver.log.DebugFormat("Resolving satellite assembly \"{0}\"", assemblyName); } string[] array = assemblyName.Name.Split(new char[] { '.' }); string sourceName = string.Join(".", array.Take(array.Length - 1)); string resolveFileName = assemblyName.Name + ".dll"; List <Assembly> list = new List <Assembly>(AppDomain.CurrentDomain.GetAssemblies()); Assembly requestingAssembly = args.RequestingAssembly; if (requestingAssembly != null) { list.Remove(requestingAssembly); list.Insert(0, requestingAssembly); } foreach (Assembly assembly in list) { AssemblyName name = assembly.GetName(); if (AssemblySatelliteResolver.SatelliteMatchesDefinition(assemblyName, name)) { bool flag2 = AssemblySatelliteResolver.ResolveCnt.GetOrAdd(assembly.FullName, (string _) => new AssemblySatelliteResolver.IntRef(0)).Increment() == 1; if (flag || flag2) { AssemblySatelliteResolver.log.InfoFormat("Resolved \"{0}\" as \"{1}\" at \"{2}\"", assemblyName, name, AssemblySatelliteResolver.GetSymbolicLocation(assembly)); } return(assembly); } } Assembly result; if (AssemblySatelliteResolver.ProbeViaLoadedAssemblies(list, assemblyName, resolveFileName, requestingAssembly, sourceName, flag, out result)) { return(result); } } catch (Exception ex) { Trace.TraceError("AssemblyResove failed. {0}", new object[] { ex }); AssemblySatelliteResolver.log.FatalFormat("AssemblyResove failed. {0}", ex); GC.KeepAlive(ex); } return(null); }
internal static Assembly AssemblyResolve(object sender, ResolveEventArgs args) { try { AssemblyName assemblyName = new AssemblyName(args.Name); if (!assemblyName.Name.EndsWith(".resources", StringComparison.OrdinalIgnoreCase)) { return((Assembly)null); } bool isLog = AssemblySatelliteResolver.EntryCount.GetOrAdd(assemblyName.FullName, (Func <string, AssemblySatelliteResolver.IntRef>)(_ => new AssemblySatelliteResolver.IntRef(0))).Increment() > 2 && !AssemblySatelliteResolver.ResolveCnt.TryGetValue(assemblyName.FullName, out AssemblySatelliteResolver.IntRef _); if (isLog) { AssemblySatelliteResolver.log.DebugFormat("Resolving satellite assembly \"{0}\"", (object)assemblyName); } string[] strArray = assemblyName.Name.Split('.'); string sourceName = string.Join(".", ((IEnumerable <string>)strArray).Take <string>(strArray.Length - 1)); string resolveFileName = assemblyName.Name + ".dll"; List <Assembly> assemblyList = new List <Assembly>((IEnumerable <Assembly>)AppDomain.CurrentDomain.GetAssemblies()); Assembly requestingAssembly = args.RequestingAssembly; if (requestingAssembly != (Assembly)null) { assemblyList.Remove(requestingAssembly); assemblyList.Insert(0, requestingAssembly); } foreach (Assembly assembly in assemblyList) { AssemblyName name = assembly.GetName(); if (AssemblySatelliteResolver.SatelliteMatchesDefinition(assemblyName, name)) { bool flag = AssemblySatelliteResolver.ResolveCnt.GetOrAdd(assembly.FullName, (Func <string, AssemblySatelliteResolver.IntRef>)(_ => new AssemblySatelliteResolver.IntRef(0))).Increment() == 1; if (isLog | flag) { AssemblySatelliteResolver.log.InfoFormat("Resolved \"{0}\" as \"{1}\" at \"{2}\"", (object)assemblyName, (object)name, (object)AssemblySatelliteResolver.GetSymbolicLocation(assembly)); } return(assembly); } } Assembly resolvedAssembly; if (AssemblySatelliteResolver.ProbeViaLoadedAssemblies((ICollection <Assembly>)assemblyList, assemblyName, resolveFileName, requestingAssembly, sourceName, isLog, out resolvedAssembly)) { return(resolvedAssembly); } } catch (Exception ex) { Trace.TraceError("AssemblyResove failed. {0}", (object)ex); AssemblySatelliteResolver.log.FatalFormat("AssemblyResove failed. {0}", (object)ex); GC.KeepAlive((object)ex); } return((Assembly)null); }