protected override void Create() { PathIdentification(); if (Core == null) { Core = new List <Element>(); //Формирую основую базу foreach (var file in AllFilesDir) { if (file.StartsWith("Data", StringComparison.OrdinalIgnoreCase)) { Core.Add(new Element("Data", file.Substring(5), Path.Combine(AbsolutePath, "Data", file.Substring(5)))); } } } var rootDirsAssembly = new List <string>(); var rootFilesAssembly = new List <string>(); foreach (var item in Core) { //Получаю корневые директории сборки, нужны для обработки путей Исходников if (item.EntryPath.Split('\\').Length > 1 && !rootDirsAssembly.Contains(item.EntryPath.Split('\\')[0])) { rootDirsAssembly.Add(item.EntryPath.Split('\\')[0]); } //Получаю корневые файлы сборки, нужны для обработки путей Исходников if (item.EntryPath.Split('\\').Length == 1) { rootFilesAssembly.Add(item.EntryPath); } } //Записываю корневые файлы и папки в синглтон RootAssembly.GetInstance(rootDirsAssembly, rootFilesAssembly); }
private void Create(List <Element> preprocessing) { Core = new List <Element>(); var noRepeat = new List <string>(); var assemblyRootDirs = RootAssembly.GetInstance().RootDirsAssembly; var assemblyRootFiles = RootAssembly.GetInstance().RootFilesAssembly; foreach (var item in preprocessing) { var itemSplit = item.EntryPath.Split('\\'); var itemJoin = new List <string>(); var flagRootFile = false; var flagPathInMod = false; for (var index = 0; index < itemSplit.Length; index++) { var word = itemSplit[index]; //Если последнее слово - это имя корневого файла, добавляю его в базу if (index == itemSplit.Length - 1) { foreach (var file in assemblyRootFiles) { if (String.Compare(word, file, StringComparison.OrdinalIgnoreCase) != 0 || noRepeat.Contains(word)) { continue; } noRepeat.Add(word); Core.Add(new Element(item.NameMod, word, item.SpecialPath)); flagRootFile = true; break; } } //Пропускаю все слова, которые не равны директориям из сборки if (!flagPathInMod && !flagRootFile) { foreach (var rootDir in assemblyRootDirs) { if (String.Compare(word, rootDir, StringComparison.OrdinalIgnoreCase) == 0) { flagPathInMod = true; } } } //Собираю все слова, начиная с директорий в сборке if (flagPathInMod) { itemJoin.Add(word); } } var relativePathJoin = string.Join("\\", itemJoin); if (relativePathJoin == string.Empty || noRepeat.Contains(relativePathJoin)) { continue; } noRepeat.Add(relativePathJoin); Core.Add(new Element(item.NameMod, relativePathJoin, item.SpecialPath)); } }