private void ScanDependencies()
		{
			var foundByLongName = new HashSet<string>();
			var foundByShortName = new HashSet<Tuple<string, string>>();
			var notFound = new HashSet<string>();

			foreach (var assemblyInfo in _assemblyInfos)
			{
				foreach (var referenceName in assemblyInfo.ReferencedNames)
				{
					var found = false;

					foreach (var otherAssemblyInfo in _assemblyInfos)
					{
						if (found)
							break;
						if (!MsilUtilities.EqualAssemblyNames(referenceName.FullName, otherAssemblyInfo.AssemblyName.FullName))
							continue;

						foundByLongName.Add(referenceName.FullName);

						var reference = new AssemblyInfoReference {
							ReferencedAssemblyName = referenceName,
							Source = assemblyInfo,
							Target = otherAssemblyInfo,
							Invalid = false,
						};

						assemblyInfo.References.Add(reference);
						otherAssemblyInfo.ReferencedBy.Add(reference);

						found = true;
					}

					foreach (var otherAssemblyInfo in _assemblyInfos)
					{
						if (found)
							break;
						if (!MsilUtilities.EqualAssemblyNames(referenceName.Name, otherAssemblyInfo.AssemblyName.Name))
							continue;

						foundByShortName.Add(Tuple.Create(referenceName.FullName, otherAssemblyInfo.AssemblyName.FullName));

						var reference = new AssemblyInfoReference {
							Source = assemblyInfo,
							Target = otherAssemblyInfo,
							Invalid = true,
						};

						assemblyInfo.References.Add(reference);
						otherAssemblyInfo.ReferencedBy.Add(reference);

						found = true;
					}

					if (!found)
					{
						notFound.Add(referenceName.FullName);
					}
				}
			}

			foundByLongName.OrderBy(v => v).ToList()
				.ForEach(n => Log.Info("Assembly '{0}' has been successfully resolved", n));
			foundByShortName.OrderBy(v => v.Item1).ToList()
				.ForEach(t => Log.Info("Assembly '{0}' has been resolved to '{1}' using short name", t.Item1, t.Item2));
			notFound.OrderBy(v => v).ToList()
				.ForEach(n => Log.Warn("Assembly '{0}' has not been found", n));
		}
        private void ScanDependencies()
        {
            var foundByLongName  = new HashSet <string>();
            var foundByShortName = new HashSet <Tuple <string, string> >();
            var notFound         = new HashSet <string>();

            foreach (var assemblyInfo in _assemblyInfos)
            {
                foreach (var referenceName in assemblyInfo.ReferencedNames)
                {
                    var found = false;

                    foreach (var otherAssemblyInfo in _assemblyInfos)
                    {
                        if (found)
                        {
                            break;
                        }
                        if (!MsilUtilities.EqualAssemblyNames(referenceName.FullName, otherAssemblyInfo.AssemblyName.FullName))
                        {
                            continue;
                        }

                        foundByLongName.Add(referenceName.FullName);

                        var reference = new AssemblyInfoReference {
                            ReferencedAssemblyName = referenceName,
                            Source  = assemblyInfo,
                            Target  = otherAssemblyInfo,
                            Invalid = false,
                        };

                        assemblyInfo.References.Add(reference);
                        otherAssemblyInfo.ReferencedBy.Add(reference);

                        found = true;
                    }

                    foreach (var otherAssemblyInfo in _assemblyInfos)
                    {
                        if (found)
                        {
                            break;
                        }
                        if (!MsilUtilities.EqualAssemblyNames(referenceName.Name, otherAssemblyInfo.AssemblyName.Name))
                        {
                            continue;
                        }

                        foundByShortName.Add(Tuple.Create(referenceName.FullName, otherAssemblyInfo.AssemblyName.FullName));

                        var reference = new AssemblyInfoReference {
                            Source  = assemblyInfo,
                            Target  = otherAssemblyInfo,
                            Invalid = true,
                        };

                        assemblyInfo.References.Add(reference);
                        otherAssemblyInfo.ReferencedBy.Add(reference);

                        found = true;
                    }

                    if (!found)
                    {
                        notFound.Add(referenceName.FullName);
                    }
                }
            }

            foundByLongName.OrderBy(v => v).ToList()
            .ForEach(n => Log.Info("Assembly '{0}' has been successfully resolved", n));
            foundByShortName.OrderBy(v => v.Item1).ToList()
            .ForEach(t => Log.Info("Assembly '{0}' has been resolved to '{1}' using short name", t.Item1, t.Item2));
            notFound.OrderBy(v => v).ToList()
            .ForEach(n => Log.Warn("Assembly '{0}' has not been found", n));
        }