AspectSharp.Lang.GacHelper.FindAssembly C# (CSharp) Method

FindAssembly() public static method

public static FindAssembly ( string assemblyName ) : Assembly
assemblyName string
return System.Reflection.Assembly
        public static Assembly FindAssembly(string assemblyName)
        {
            IAssemblyEnum assemblyEnum = GacHelper.CreateGACEnum();
            IAssemblyName nativeName;

            List<AssemblyName> matches = new List<AssemblyName>();

            while(GacHelper.GetNextAssembly(assemblyEnum, out nativeName) == 0)
            {
                string nameString = GacHelper.GetName(nativeName);

                if(StringComparer.InvariantCultureIgnoreCase.Compare(nameString, assemblyName) == 0)
                {
                    AssemblyName name = GacHelper.GetAssemblyName(nativeName);
                    matches.Add(name);
                }
            }

            AssemblyName last = null;

            for(int i = 0; i < matches.Count; i++)
            {
                AssemblyName current = matches[i];

                if(last != null)
                {
                    if(last.Version.Major <= current.Version.Major)
                    {
                        if(last.Version.Major < current.Version.Major)
                        {
                            last = current;
                        }
                        else
                        {
                            if(last.Version.Minor < current.Version.Minor)
                            {
                                last = current;
                            }
                        }
                    }
                }
                else
                {
                    last = current;
                }
            }

            if(last != null)
            {
                return Assembly.Load(last);
            }
            else
            {
                return null;
            }
        }