using System.IO; using System.Linq; using WIDESEA_Core.Extensions; namespace WIDESEA_Builder.Utility { public class ProjectPath { // private int findCount = 1; /// /// 获取web父目录所在位置 /// /// public static DirectoryInfo GetProjectDirectoryInfo() { return GetProjectDirectoryInfo(new DirectoryInfo("".MapPath()), 1); } public static string GetProjectFileName(string startsWith) { var dd = GetProjectDirectoryInfo()?.GetDirectories(); string fileNames = GetProjectDirectoryInfo()?.GetDirectories() .Where(c => !c.Name.ToLower().EndsWith("_builder") && !c.Name.ToLower().EndsWith("_core") && !c.Name.ToLower().EndsWith("_entity") //&& !c.Name.ToLower().EndsWith("_system") && !c.Name.ToLower().EndsWith("_webapi") && !c.Name.ToLower().EndsWith("_baseserve") && !c.Name.ToLower().EndsWith(".vs") ).Select(x => x.Name).ToList().Serialize(); return fileNames ?? "''"; } /// /// 获取指定结尾的项目名称 /// /// /// public static string GetLastIndexOfDirectoryName(string lastIndexOfName) { string projectName = GetProjectDirectoryInfo()?.GetDirectories() .Where(c => c.Name.LastIndexOf(lastIndexOfName) != -1).Select(x => x.Name).FirstOrDefault(); if (string.IsNullOrEmpty(projectName)) { var dllList = new DirectoryInfo("".MapPath()).GetFiles("*.dll", SearchOption.AllDirectories); projectName = dllList.Where(x => x.Name.LastIndexOf(lastIndexOfName + ".dll") != -1).FirstOrDefault()?.Name; if (!string.IsNullOrEmpty(projectName)) { projectName = projectName.Replace(".dll", ""); } } return projectName; } /// /// 获取项目所在路径 /// /// /// private static DirectoryInfo GetProjectDirectoryInfo(DirectoryInfo directoryInfo, int findCount) { if (directoryInfo == null) { return null; } if (directoryInfo.Exists && directoryInfo.GetDirectories().Where(x => x.Name.LastIndexOf("_Web") != -1).FirstOrDefault() != null) { return directoryInfo; } if (findCount < 7) { findCount++; DirectoryInfo dir = GetProjectDirectoryInfo(directoryInfo.Parent, findCount); if (dir != null) { return dir; } } return null; } } }