From 0183560f00e6421dfb6b63ef840262227c8fce2c Mon Sep 17 00:00:00 2001 From: Lannamokia Date: Fri, 8 Aug 2025 15:26:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(VHDManager):=20=E6=94=B9=E8=BF=9Bpackage?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9=E6=90=9C=E7=B4=A2=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E6=B7=BB=E5=8A=A0=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化package文件夹的搜索流程,先在根目录查找,未找到时再递归搜索 添加详细的日志输出和错误处理,便于排查问题 --- VHDManager.cs | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/VHDManager.cs b/VHDManager.cs index cab4307..523cd0a 100644 --- a/VHDManager.cs +++ b/VHDManager.cs @@ -177,20 +177,59 @@ exit"; StatusChanged?.Invoke("正在搜索package文件夹..."); if (!Directory.Exists(TARGET_DRIVE)) + { + StatusChanged?.Invoke($"目标驱动器 {TARGET_DRIVE} 不存在"); return null; + } return await Task.Run(() => { try { - var directories = Directory.GetDirectories(TARGET_DRIVE, "*", SearchOption.AllDirectories) - .Where(d => Path.GetFileName(d).ToLower() == "package") - .FirstOrDefault(); + StatusChanged?.Invoke($"开始在 {TARGET_DRIVE} 中搜索package文件夹..."); - return directories; + // 首先检查根目录 + var rootDirs = Directory.GetDirectories(TARGET_DRIVE) + .Select(d => new { Path = d, Name = Path.GetFileName(d) }) + .ToList(); + + StatusChanged?.Invoke($"根目录下找到 {rootDirs.Count} 个文件夹:"); + foreach (var dir in rootDirs) + { + StatusChanged?.Invoke($" - {dir.Name}"); + Debug.WriteLine($"根目录文件夹: {dir.Name}"); + } + + // 检查根目录中是否有package文件夹(不区分大小写) + var packageInRoot = rootDirs.FirstOrDefault(d => + string.Equals(d.Name, "package", StringComparison.OrdinalIgnoreCase)); + + if (packageInRoot != null) + { + StatusChanged?.Invoke($"在根目录找到package文件夹: {packageInRoot.Path}"); + return packageInRoot.Path; + } + + // 如果根目录没有,递归搜索所有子目录 + StatusChanged?.Invoke("根目录未找到package文件夹,开始递归搜索..."); + + var allDirectories = Directory.GetDirectories(TARGET_DRIVE, "*", SearchOption.AllDirectories) + .Where(d => string.Equals(Path.GetFileName(d), "package", StringComparison.OrdinalIgnoreCase)) + .ToList(); + + StatusChanged?.Invoke($"递归搜索找到 {allDirectories.Count} 个package文件夹"); + foreach (var dir in allDirectories) + { + StatusChanged?.Invoke($" 找到: {dir}"); + Debug.WriteLine($"找到package文件夹: {dir}"); + } + + return allDirectories.FirstOrDefault(); } - catch + catch (Exception ex) { + StatusChanged?.Invoke($"搜索package文件夹时出错: {ex.Message}"); + Debug.WriteLine($"FindPackageFolder错误: {ex}"); return null; } });