/// <summary> /// Resolves the specified assembly name. /// </summary> /// <param name="assemblyName">Name of the assembly.</param> /// <returns>The assembly with the specified name.</returns> public Assembly Resolve(string assemblyName) { if (string.IsNullOrEmpty(assemblyName)) throw new ArgumentException("string assemblyName should not be null or empty.", "assemblyName"); AssemblyInfo assemblyInfo = new AssemblyInfo(assemblyName); foreach (Assembly loadedAssembly in this.GetLoadedAssemblies()) { AssemblyInfo loadedAssemblyInfo = new AssemblyInfo(loadedAssembly); if (assemblyInfo.Equals(loadedAssemblyInfo)) return loadedAssembly; } foreach (AssemblyName referencedAssemblyName in Assembly.GetCallingAssembly().GetReferencedAssemblies()) { AssemblyInfo referencedAssemblyInfo = new AssemblyInfo(referencedAssemblyName); if (assemblyInfo.Equals(referencedAssemblyInfo)) return Assembly.Load(referencedAssemblyName); } throw new Exception(string.Format("The assembly '{0}' could not be resolved.", assemblyInfo.ToString())); }
/// <summary> /// Determines whether two field values are equal. /// </summary> /// <param name="original">The original assembly information.</param> /// <param name="compareTo">The compare to assembly information.</param> /// <param name="fieldName">Name of the field to compare.</param> /// <returns> /// <c>true</c> if the field values are identical; otherwise, <c>false</c>. /// </returns> private bool isFieldEqual(AssemblyInfo original, AssemblyInfo compareTo, string fieldName) { bool originalContainsField = original.ContainsField(fieldName); bool compareToContainsField = compareTo.ContainsField(fieldName); // The original assembly info doesn't contain the field, // so any value in the compare to assembly info is valid. if (!originalContainsField) return true; // Both do not contain the field -> equal if (!originalContainsField && !compareToContainsField) return true; // Both contain the field -> check if content is equal if (originalContainsField && compareToContainsField) return original.GetField(fieldName).Equals(compareTo.GetField(fieldName)); // The original assembly info contains the field, but the compare to assembly info doesn't -> NOT equal return false; }
private /*static*/ string getAssemblyName(Assembly assembly, FormatterAssemblyStyle assemblyStyle) { System.Diagnostics.Debug.Assert(null != assembly, "The 'assembly' argument cannot be null."); AssemblyInfo assemblyInfo = new AssemblyInfo(assembly); if (assemblyInfo.Name == "mscorlib" || assemblyInfo.Name == "System") return null; string assemblyName = assemblyInfo.ToString(); if (FormatterAssemblyStyle.Simple == assemblyStyle) assemblyName = assemblyInfo.Name; return assemblyName; }