Exemplo n.º 1
0
        public static Module ToModuleInfo(this Assembly assembly, IExceptionlessLog log = null)
        {
            if (assembly == null)
            {
                return(null);
            }

            if (log == null)
            {
                log = new NullExceptionlessLog();
            }

            Action <Exception, string> logError;

#if EMBEDDED
            logError = (e, message) => log.Error(e, message);
#else
            logError = (e, message) => Log.Error().Exception(e).Message(message).Report().Write();
#endif

            Module module = _moduleCache.GetOrAdd(assembly.FullName, k => {
                var mod           = new Module();
                AssemblyName name = assembly.GetAssemblyName();
                if (name != null)
                {
                    mod.Name    = name.Name;
                    mod.Version = name.Version.ToString();
                    byte[] pkt  = name.GetPublicKeyToken();
                    if (pkt.Length > 0)
                    {
                        mod.ExtendedData["PublicKeyToken"] = pkt.ToHex();
                    }
                }

                string infoVersion = assembly.GetInformationalVersion();
                if (!String.IsNullOrEmpty(infoVersion) && infoVersion != mod.Version)
                {
                    mod.ExtendedData["ProductVersion"] = infoVersion;
                }

                string fileVersion = assembly.GetFileVersion();
                if (!String.IsNullOrEmpty(fileVersion) && fileVersion != mod.Version)
                {
                    mod.ExtendedData["FileVersion"] = fileVersion;
                }

                DateTime?creationTime = assembly.GetCreationTime();
                if (creationTime.HasValue)
                {
                    mod.CreatedDate = creationTime.Value;
                }

                DateTime?lastWriteTime = assembly.GetLastWriteTime();
                if (lastWriteTime.HasValue)
                {
                    mod.ModifiedDate = lastWriteTime.Value;
                }

                return(mod);
            });

            if (module != null)
            {
                if (assembly == Assembly.GetEntryAssembly())
                {
                    module.IsEntry = true;
                }
            }

            return(module);
        }
        public static Module ToModuleInfo(this Assembly assembly, IExceptionlessLog log = null) {
            if (assembly == null)
                return null;

            if (log == null)
                log = new NullExceptionlessLog();

            Action<Exception, string> logError;
#if EMBEDDED
            logError = (e, message) => log.Error(e, message);
#else
            logError = (e, message) => Log.Error().Exception(e).Message(message).Report().Write();
#endif

            Module module = _moduleCache.GetOrAdd(assembly.FullName, k => {
                var mod = new Module();
                AssemblyName name = assembly.GetAssemblyName();
                if (name != null) {
                    mod.Name = name.Name;
                    mod.Version = name.Version.ToString();
                    byte[] pkt = name.GetPublicKeyToken();
                    if (pkt.Length > 0)
                        mod.ExtendedData["PublicKeyToken"] = pkt.ToHex();
                }

                string infoVersion = assembly.GetInformationalVersion();
                if (!String.IsNullOrEmpty(infoVersion) && infoVersion != mod.Version)
                    mod.ExtendedData["ProductVersion"] = infoVersion;

                string fileVersion = assembly.GetFileVersion();
                if (!String.IsNullOrEmpty(fileVersion) && fileVersion != mod.Version)
                    mod.ExtendedData["FileVersion"] = fileVersion;

                DateTime? creationTime = assembly.GetCreationTime();
                if (creationTime.HasValue)
                    mod.CreatedDate = creationTime.Value;

                DateTime? lastWriteTime = assembly.GetLastWriteTime();
                if (lastWriteTime.HasValue)
                    mod.ModifiedDate = lastWriteTime.Value;

                return mod;
            });

            if (module != null) {
                if (assembly == Assembly.GetEntryAssembly())
                    module.IsEntry = true;
            }

            return module;
        }