private void LoadAllReferencedAssemblies(AssemblyPointer from) { // Already loaded ? if (listForBuild.Contains(from)) { return; } listForBuild.Add(from); // Load and Build AssemblyPointers and Dependencies foreach (AssemblyName name in GetFilteredReferencedAssemblies(from)) { AssemblyPointer to = FindAssemblyByName(name); if (to == null) { to = new AssemblyPointer(name); } if (FindDependency(from, to) == null) { Dependency dependency = new Dependency(from, to); Dependencies.Add(dependency); } } foreach (AssemblyName name in GetFilteredReferencedAssemblies(from)) { AssemblyPointer to = GetAssemblyByName(name); if (to.PhysicalyExists) { LoadAllReferencedAssemblies(to); } } }
private IEnumerable <AssemblyName> GetFilteredReferencedAssemblies(AssemblyPointer from) { return(from .GetReferencedAssemblies() .Where(x => !filterRegexList .Any(y => y.Match(x.Name).Success))); }
private AssemblyPointer GetAssemblyByName(AssemblyName name) { AssemblyPointer pointer = FindAssemblyByName(name); if (pointer == null) { throw new InvalidOperationException(); } return(pointer); }
private static List <AssemblyPointer> FindVersionConflicts(AssemblyPointer pointer, Model model) { List <AssemblyPointer> versionConfilcts = new List <AssemblyPointer>(); foreach (AssemblyPointer similar in model.FindGroupByName("All Assemblies").Pointers) { if (pointer.GetName().Name.Equals(similar.GetName().Name) && !pointer.GetName().Version.Equals(similar.GetName().Version)) { versionConfilcts.Add(similar); versionConfilcts.Add(pointer); pointer.Errors.Add("The model contains other version of this assembly"); similar.Errors.Add("The model contains other version of this assembly"); } } return(versionConfilcts); }
///////////////////////////// ///////PRIVATE GETTERS/////// ///////////////////////////// private Dependency FindDependency(AssemblyPointer from, AssemblyPointer to) { return(Dependencies.FirstOrDefault(x => x.From.GetName().Equals(from.GetName()) && x.To.GetName().Equals(to.GetName()))); }