拉取上游提交后运行C#解决方案出现System.ArgumentException运行时错误
解决C#运行时"路径必须为绝对路径"错误
1. 定位报错代码
- 查看错误调用栈,找到触发
System.ArgumentException的具体方法(比如Directory.EnumerateFiles、Path.GetFullPath这类要求绝对路径的API),确认哪个地方传入了名为root的参数。 - 追踪该参数的来源:是硬编码的相对路径?还是从配置文件、环境变量读取的路径?
2. 修复路径处理逻辑
- 如果是硬编码的相对路径,直接转为绝对路径,或者用
Path.GetFullPath()做转换:// 错误示例:使用相对路径 var root = "./data"; // 正确示例:转换为绝对路径 var root = Path.GetFullPath("./data"); - 如果路径来自配置,读取后立即做绝对路径转换,避免配置里的相对路径引发问题:
var configPath = Configuration["DataRoot"]; var root = Path.GetFullPath(configPath);
3. 检查上游提交的变更
- 通过Git提交记录,排查上游提交是否修改了路径相关代码:
- 对比变更前后的代码,确认是否新增了相对路径的使用,且未做绝对路径转换
- 查看提交说明,确认是否有路径逻辑的调整
4. 验证运行环境的工作目录
- 程序运行的工作目录可能和预期不符,导致相对路径解析错误,可在报错代码前输出当前目录确认:
Console.WriteLine($"当前工作目录:{Directory.GetCurrentDirectory()}"); - 如果工作目录不符合预期,可在程序启动时设置正确的基准目录:
Directory.SetCurrentDirectory(AppContext.BaseDirectory);
内容的提问来源于stack exchange,提问作者Dung
相关产品推荐
相关产品推荐

