public bool Add(string assemblyPath) { if (assemblyPath == null) { throw new ArgumentNullException("assemblyPath"); } FileInfo assemblyFile = new FileInfo(assemblyPath); if (!assemblyFile.Exists) { throw new FileNotFoundException(); } try { using (AssemblyReflectionManager reflectionManager = new AssemblyReflectionManager()) { lock (this.assemblyPaths) { if (this.pathAssembly.ContainsKey(assemblyPath)) { throw new ArgumentException(Resources.AssemblyAlreadyAdded); } if (reflectionManager.LoadAssembly(assemblyFile.FullName)) { var assemblyName = reflectionManager.Reflect(assemblyFile.FullName, assembly => assembly.FullName); AddPathToName(assemblyName, assemblyFile.FullName); this.log.Info(Resources.AssemblyAdded, assemblyFile.FullName); if (this.AssemblyAdded != null) { this.AssemblyAdded(this, new AssemblyAddedEventArgs(assemblyFile.FullName, reflectionManager)); } return(true); } } } } catch (BadImageFormatException) { } catch (FileLoadException) { } return(false); }
/// <summary> /// Initializes a new instance of the <see cref="AssemblyAddedEventArgs"/> class. /// </summary> /// <param name="id">The assembly id.</param> /// <param name="reflectionManager">The reflection manager.</param> public AssemblyAddedEventArgs(string id, AssemblyReflectionManager reflectionManager) { this.AssemblyId = id; this.reflectionManager = reflectionManager; }