C#怎么获取当前程序路径 C#获取各种路径的方法汇总

畫卷琴夢
发布: 2025-12-16 05:15:12
原创
914人浏览过
程序路径应使用AppContext.BaseDirectory(.NET Core/.NET 5+)或Path.GetDirectoryName(Application.ExecutablePath)(WinForms),而非Environment.CurrentDirectory;配置文件建议置于程序目录并用Path.Combine拼接访问。

c#怎么获取当前程序路径 c#获取各种路径的方法汇总

当前程序路径一般指可执行文件(.exe)所在目录,不是解决方案目录或项目目录。直接用 Application.ExecutablePathSystem.Reflection.Assembly.GetExecutingAssembly().Location 获取完整路径,再用 Path.GetDirectoryName() 提取目录即可。别用 Environment.CurrentDirectory,它可能被用户或代码修改过,不可靠。

获取当前可执行文件所在目录(最常用)

这是绝大多数场景需要的“程序路径”,比如读取同级配置文件、写日志到本地文件夹:

  • Path.GetDirectoryName(Application.ExecutablePath) —— WinForms 项目推荐,简洁稳定
  • Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) —— 控制台、WPF、类库通用,GetExecutingAssembly 返回当前运行代码所在的程序集
  • AppContext.BaseDirectory —— .NET Core / .NET 5+ 推荐,尤其在发布为单文件时更准确(注意:单文件发布下 Location 可能为空或指向临时解压路径)

获取当前工作目录(慎用)

Environment.CurrentDirectory 返回进程启动时的工作目录,不是程序文件位置。命令行中 cd 到某目录再运行 exe,这里就会是那个目录。调试时 VS 默认设为项目目录,但发布后行为不确定:

  • 仅在明确需要“用户启动上下文”时才用(如批量处理当前目录下的文件)
  • 不要用它替代程序路径,否则部署后容易出错

获取项目/源码相关路径(仅开发阶段参考)

这些路径在编译后不存在,不能用于生产环境:

青泥AI
青泥AI

青泥学术AI写作辅助平台

青泥AI 360
查看详情 青泥AI
  • Directory.GetCurrentDirectory() —— 同 Environment.CurrentDirectory,开发时常是项目根目录,但不保证
  • AppDomain.CurrentDomain.BaseDirectory —— 通常和 AppContext.BaseDirectory 一致,.NET Framework 时代常用,新项目优先用后者
  • typeof(Program).Assembly.Location —— 和 GetExecutingAssembly().Location 类似,但指定类型更明确,适合在类库中获取自身程序集位置

读写配置或资源文件的实用建议

路径只是手段,目标是可靠访问文件:

  • 配置文件(如 appsettings.json)建议放在程序目录,用 Path.Combine(AppContext.BaseDirectory, "appsettings.json")
  • 想让程序“自带”资源,把文件属性设为 Copy to Output Directory = Copy always,然后按相对路径读取
  • 避免硬编码绝对路径;跨平台注意用 Path.Combine() 拼接,别用 +/

基本上就这些。记住核心:要“程序放哪儿”,就用 AppContext.BaseDirectory(新项目)或 Path.GetDirectoryName(Application.ExecutablePath)(WinForms),其它路径按需谨慎选用。

以上就是C#怎么获取当前程序路径 C#获取各种路径的方法汇总的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号