/// <summary> /// Registers the names, publickeytokens in the form of blobs and versions of all resolved assemblies to AssemblyInfos so they can be later retrieved in ReferenceString /// or whatever needs them. /// </summary> public static void RegisterAssemblies() { foreach (Assembly assembly in LoadedAssemblies.Values) { if (!AssemblyInfos.ContainsKey(assembly.GetName().Name)) { AssemblyInfos.Add(assembly.GetName().Name, new ValuePair <string, string>(CodeUtils.ToBlob(assembly.GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", assembly.GetName().Version.Major.ToString(), assembly.GetName().Version.Minor.ToString(), assembly.GetName().Version.Build.ToString(), assembly.GetName().Version.Revision.ToString()))); if (assembly.GetName().Name != "Halcyon") { Logger.TalkyLog("registering ", assembly.GetName().Name, CodeUtils.ToBlob(assembly.GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", assembly.GetName().Version.Major.ToString(), assembly.GetName().Version.Minor.ToString(), assembly.GetName().Version.Build.ToString(), assembly.GetName().Version.Revision.ToString())); } } } //Better loop through CurrentDomain as well so we can get all the good stuff like mscorlib foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { if (!AssemblyInfos.ContainsKey(assembly.GetName().Name)) { AssemblyInfos.Add(assembly.GetName().Name, new ValuePair <string, string>(CodeUtils.ToBlob(assembly.GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", assembly.GetName().Version.Major.ToString(), assembly.GetName().Version.Minor.ToString(), assembly.GetName().Version.Build.ToString(), assembly.GetName().Version.Revision.ToString()))); if (assembly.GetName().Name != "Halcyon") { Logger.TalkyLog("registering ", assembly.GetName().Name, CodeUtils.ToBlob(assembly.GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", assembly.GetName().Version.Major.ToString(), assembly.GetName().Version.Minor.ToString(), assembly.GetName().Version.Build.ToString(), assembly.GetName().Version.Revision.ToString())); } } } //Halcyon's publickeytoken does not load properly in the way above. Therefore we need to get it manually. AssemblyInfos.Remove("Halcyon"); AssemblyInfos.Add("Halcyon", new ValuePair <string, string>(CodeUtils.ToBlob(Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Major.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Minor.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Build.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Revision.ToString()))); Logger.TalkyLog("registering ", Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Name, CodeUtils.ToBlob(Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().GetPublicKeyToken()), string.Format(".ver {0}:{1}:{2}:{3}", Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Major.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Minor.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Build.ToString(), Assembly.GetAssembly(typeof(Halcyon.Referencer)).GetName().Version.Revision.ToString())); }