新闻中心

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

2025-12-16
浏览次数:
返回列表
程序路径应使用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 默认设为项目目录,但发布后行为不确定:

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

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

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

QoQo QoQo

QoQo是一款专注于UX设计的AI工具,可以帮助UX设计师生成用户角色卡片、用户旅程图、用户访谈问卷等。

QoQo 172 查看详情 QoQo
  • 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#获取各种路径的方法汇总的详细内容,更多请关注其它相关文章!


# 这是  # 微信推广通过营销吧tt团队  # 伊犁抖音关键词排名公司  # 锡山区运营推广招聘网站  # 朔州网站建设好吗  # 通辽网站关键词优化排名  # 拼车网站怎么做推广赚钱  # 快速入门seo 霸屏  # 六神花露水营销策划推广  # 常德视频营销推广企业  # 二手车seo推广哪里好  # 相关文章  # 放在  # 序列化  # 就会  # js  # 类库  # 可执行文件  # 如何将  # 设为  # .net  # c#  # 配置文件  # win  # 解压  # ai  # app  # 编码  # json 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 漫蛙漫画登录站点 漫蛙2正版漫画快速访问  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  如何提高微信支付的安全性_微信支付安全防护与设置建议  c++项目目录结构应该如何组织_c++工程化项目结构规范  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  解决 Express.js 中 PUT 请求密码修改失败的路由配置指南  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  Pandas DataFrame:高效添加条件计算列  使用Pandas转换并合并DataFrame:多列映射至统一结构  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  Pygame教程:解决用户输入与游戏状态更新不同步问题  小米汽车11月交付量突破40000台!雷军:将继续努力  今日头条怎么同步内容到抖音_今日头条内容同步到抖音教程  CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  Django通过AJAX异步上传图片并保存至模型的完整指南  c++20的std::jthread是什么_c++可中断线程与RAII式管理  mc.js官网登录入口 mc.js官方登录入口最新版  Go调试环境为何无法启动_Go调试器启动失败原因与解决策略  Python实现多节点属性重叠度分析教程  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  汽水音乐在线解析 汽水音乐在线解析入口  Yandex浏览器官方网页版入口 Yandex浏览器最新版官网  妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画  C++如何解决segmentation fault_C++段错误调试与原因分析  PHP URL参数传递与500错误调试指南  黑猫投诉统一入口官网 消费者权益保护投诉平台  C#中解析不规范的HTML为XML 常见的坑与解决办法  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  Golang如何使用context实现超时取消_Golang context超时取消模式实践  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  如何在CSS中使用visited与link控制链接颜色_visited link伪类配合  win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】  TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  抖音创作助手登录入口_抖音创作辅助工具官网直达  Pandas DataFrame 多条件优先级排序与排名  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  狙击外星人小游戏开始_狙击外星人小游戏立即开始  Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法  ACG动漫视频网入口 ACG动漫*免费正版观看地址  CSS Box Model与弹性按钮:维持布局稳定的动画实践  单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分 

搜索