using System;
using System.IO;
namespace ServerTest;
/// <summary>测试æºç ä½ç½®è¾…助</summary>
/// <remarks>
/// 部分测试直接读å–产物æºç åšæ–言。构建输出目录å¯è¢«é‡å®šå‘(例如进程å 用 Bin 时改用 -p:OutputPath),
/// æŒ‰å›ºå®šçš„ç›¸å¯¹å±‚çº§å›žæº¯ä¼šç®—é”™æ ¹ç›®å½•ï¼Œå› æ¤æ”¹ä¸ºå‘上查找解决方案文件定ä½ä»“åº“æ ¹ã€‚
/// </remarks>
public static class SourceRoot
{
private const String SolutionFile = "星尘.slnx";
/// <summary>获å–ä»“åº“æ ¹ç›®å½•</summary>
/// <returns>ä»“åº“æ ¹ç›®å½•ï¼Œæœªæ‰¾åˆ°æ—¶è¿”å›žæž„å»ºè¾“å‡ºç›®å½•</returns>
public static String Find()
{
var dir = new DirectoryInfo(AppContext.BaseDirectory);
while (dir != null)
{
if (File.Exists(Path.Combine(dir.FullName, SolutionFile))) return dir.FullName;
dir = dir.Parent;
}
return AppContext.BaseDirectory;
}
/// <summary>读å–仓库内æºç 文本</summary>
/// <param name="relativePath">ç›¸å¯¹ä»“åº“æ ¹çš„è·¯å¾„</param>
/// <returns>æºç 文本</returns>
public static String ReadSource(String relativePath) => File.ReadAllText(FindPath(relativePath));
/// <summary>获å–仓库内æºç 的完整路径</summary>
/// <param name="relativePath">ç›¸å¯¹ä»“åº“æ ¹çš„è·¯å¾„</param>
/// <returns>完整路径</returns>
public static String FindPath(String relativePath) => Path.Combine(Find(), relativePath);
}
|