private static void PrintAss()
{
foreach (var prjInfo in prjInfoDic.Values.Where(item => item.RefError.Count > 0))
{
Console.WriteLine(prjInfo.ToString());
}
Console.WriteLine(LostAssembly.OutputList("Lost Assemblies"));
int level = 0;
Console.WriteLine(root.OutputList($"-------------Level {level}-------------\n", item => $"{item.AssemblyName},{item.PrjFullName}\n"));
root.OrderBy(item => item.Module).ToList().ForEach(item => prjInfoDic.Remove(item.AssemblyName));
level++;
while (prjInfoDic.Count > 0)
{
var count = prjInfoDic.Count;
var thisLevel = prjInfoDic.Values
.Where(item => (!item.PrjRef.Exists(refItem => !root.Contains(refItem))))
.OrderBy(item => item.Module)
.ToList();
if (thisLevel.Count == 0)
{
var recursivePrj = DealRecursiveRef();
if (recursivePrj == null)
{
Console.WriteLine("Failed to remove cycle!");
break;
}
else
{
thisLevel.Add(recursivePrj);
}
}
Console.WriteLine(thisLevel.OutputList($"-------------Level {level}-------------\n", item => $"{item.AssemblyName},{item.PrjFullName}\n"));
root.AddRange(thisLevel);
thisLevel.ForEach(item => prjInfoDic.Remove(item.AssemblyName));
GenSln(thisLevel, level);
level++;
}
Console.WriteLine(prjInfoDic.Values.ToList().OrderBy(item => item.Module).ToList().OutputList("-------------Not Reachable-------------\n"
, item => item.AssemblyName + "\n"));
foreach (var notReachableAss in prjInfoDic)
{
Console.WriteLine(
notReachableAss.Value.PrjRef
.Where(item => !root.Contains(item))
.Select(item => item.AssemblyName)
.ToList()
.OutputList(notReachableAss.Key + " Ref not in builded list\n", item => "\t" + item + "\n")
);
}
}