Exemple #1
0
        /// <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()));
        }