/// <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()));
        }
Example #2
0
        /// <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;
        }
Example #3
0
		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;
		}