public IEnumerable LoadAssemblies()

in src/lib/Microsoft.Fx.Portability.Cci/HostEnvironment.cs [682:720]


        public IEnumerable<IAssembly> LoadAssemblies(IEnumerable<AssemblyIdentity> identities, bool warnOnVersionMismatch, Action<string, ErrorTreatment> logErrorOrWarningCallback)
        {
            List<IAssembly> matchingAssemblies = new List<IAssembly>();
            foreach (var unmappedIdentity in identities)
            {
                // Remap the name and clear the location.
                var identity = new AssemblyIdentity(this.NameTable.GetNameFor(unmappedIdentity.Name.Value),
                    unmappedIdentity.Culture, unmappedIdentity.Version, unmappedIdentity.PublicKeyToken, string.Empty);

                var matchingIdentity = this.ProbeLibPaths(identity);

                var matchingAssembly = this.LoadAssembly(matchingIdentity);
                if ((matchingAssembly == null || matchingAssembly == Dummy.Assembly) && logErrorOrWarningCallback != null)
                {
                    var message = string.Format(CultureInfo.CurrentCulture, "Failed to find or load matching assembly '{0}'.", identity.Name.Value);
                    logErrorOrWarningCallback(message, LoadErrorTreatment);
                    continue;
                }

                if (!identity.Version.Equals(matchingAssembly.Version) && logErrorOrWarningCallback != null && warnOnVersionMismatch)
                {
                    var message = string.Format(CultureInfo.CurrentCulture, "Found '{0}' with version '{1}' instead of '{2}'.", identity.Name.Value, matchingAssembly.Version, identity.Version);
                    logErrorOrWarningCallback(message, ErrorTreatment.TreatAsWarning);
                }

                string idPKT = identity.GetPublicKeyToken();
                string matchingPKT = matchingAssembly.GetPublicKeyToken();

                if (!idPKT.Equals(matchingPKT, StringComparison.OrdinalIgnoreCase) && logErrorOrWarningCallback != null)
                {
                    string message = string.Format(CultureInfo.CurrentCulture, "Found '{0}' with PublicKeyToken '{1}' instead of '{2}'.", identity.Name.Value, matchingPKT, idPKT);
                    logErrorOrWarningCallback(message, ErrorTreatment.TreatAsWarning);
                }

                matchingAssemblies.Add(matchingAssembly);
            }

            return matchingAssemblies;
        }