c#获取当前程序所在目录避坑

var dirpath = Directory.GetCurrentDirectory();

Console.WriteLine("Directory.GetCurrentDirectory = " + dirpath);

// 通过 AppDomain.CurrentDomain.BaseDirectory 读取根目录

var dirpath1 = AppDomain.CurrentDomain.BaseDirectory;

Console.WriteLine("AppDomain.CurrentDomain.BaseDirectory = " + dirpath1);

// 通过 Environment.CurrentDirectory 来读取根目录

var dirpath2 = Environment.CurrentDirectory;

Console.WriteLine("Environment.CurrentDirectory = " + dirpath2);

// 通过 Assembly.GetExecutingAssembly().Location 来获取运行程序集所在的位置,从而判断根目录

var dirpath3 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

Console.WriteLine("Path.GetDirectoryName Assembly.GetExecutingAssembly().Location = " + dirpath3);

// 通过 AppContext.BaseDirectory 获取根目录

var dirpath4 = AppContext.BaseDirectory;

Console.WriteLine("AppContext.BaseDirectory = " + dirpath4);

以上常见的 5 种读取程序当前目录的办法在绝大多数情况下都可以正确的获取到预期的结果。其中需要注意的是Directory.GetCurrentDirectoryEnvironment.CurrentDirectory。这2个方法在 cmd 或者 bash 环境下返回的是工作目录;使用 A 程序启动另外一个 B 程序的时候,B 程序获取到的根目录是 A 程序所在的目录。所以使用 Directory.GetCurrentDirectoryEnvironment.CurrentDirectory 的时候一定要格外注意,避免引入 BUG 。

相关推荐
黎雁·泠崖几秒前
【魔法森林冒险】3/14 Allen类(一):主角核心属性与初始化
java·开发语言
黎雁·泠崖5 分钟前
【魔法森林冒险】1/14 项目总览:用Java打造你的第一个回合制冒险游戏
java·开发语言
独好紫罗兰10 分钟前
对python的再认识-基于数据结构进行-a006-元组-拓展
开发语言·数据结构·python
C++ 老炮儿的技术栈14 分钟前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
怣5024 分钟前
MySQL子查询零基础入门教程:从小白到上手(零基础入门版)
数据库·mysql
yuuki23323324 分钟前
【C++】继承
开发语言·c++·windows
222you25 分钟前
Redis的主从复制和哨兵机制
java·开发语言
码界调试侠27 分钟前
MongoDB 常用查询语法
数据库·mongodb
静听山水29 分钟前
StarRocks导入数据【Stream Load】
数据库
藦卡机器人29 分钟前
国产机械臂做的比较好的品牌有哪些?
大数据·数据库·人工智能