C# 不要依赖 Environment.CurrentDirectory 来获取应用程序目录

[软件开发] 季雨林 2025/9/26 11:37:02

最近改造程序,做了个自动加载程序目录配置文件功能,但我调试过程获取路径用了 Environment.CurrentDirectory ,实际部署却发现有些时候程序自动启动失败了,经过追加日志分析发现这行:

 加载配置文件出错!未能找到文件“C:\Windows\system32\config.json”。

之所以这里出问题,在于我的应用程序显然没有放在C:\Windows\system32\下,我把快捷方式放在启动文件夹,所以Environment.CurrentDirectory 就错了。Environment.CurrentDirectory返回的路径却是这个,从而导致加载不到正确路径的文件。

现在有了DeepSeek确实方便,把问题丢给DS,得出的结论也非常快捷:

// 方法1:获取入口程序集所在目录(最可靠)

string appDirectory1 = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);


// 方法2:获取执行程序集所在目录

string appDirectory2 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);


// 方法3:使用反射获取代码基目录

string appDirectory3 = Path.GetDirectoryName(

    Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));



原文地址: https://www.opengps.cn/Blog/View.aspx?id=10076 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示