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;
}
}
}