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; }