using Common.Extensions; using System.IO; using System.Linq; namespace Common.Utilities { public class ProjectPath { /// /// 获取web父目录所在位置 /// /// public static DirectoryInfo GetProjectDirectoryInfo() { return GetProjectDirectoryInfo(new DirectoryInfo("".MapPath()), 1); } /// /// 获取指定结尾的项目名称 /// /// /// 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)) { projectName = new DirectoryInfo("".MapPath()).GetFiles().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(".Mvc") != -1).FirstOrDefault() != null) { return directoryInfo; } if (findCount < 7) { findCount++; DirectoryInfo dir = GetProjectDirectoryInfo(directoryInfo.Parent, findCount); if (dir != null) { return dir; } } return null; } } }