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 。

相关推荐
weixin_307779134 小时前
C#程序实现将Teradata的存储过程转换为Snowflake的sql的存储过程
数据库·数据仓库·c#·云计算·迁移学习
Victory_20254 小时前
c# stateless介绍
c#
IT北辰4 小时前
用 Python 实现连续数据分组求和并回写
开发语言·python
金仓拾光集4 小时前
金仓数据库践行社会责任:以技术驱动绿色计算与数据普惠
运维·数据库·oracle·kingbase·数据库平替用金仓·金仓数据库
凤山老林4 小时前
还在用JDK8?JDK8升级JDK11:一次价值千万的升级指南
java·开发语言·jvm·spring boot·后端·jdk
沐知全栈开发5 小时前
Servlet 数据库访问
开发语言
gc_22995 小时前
学习C#调用OpenXml操作word文档的基本用法(3:Style类分析-1)
c#·style·openxml
金仓拾光集5 小时前
金仓数据库赋能地铁AFC系统升级:核心技术实现与落地
运维·数据库·ux·kingbase·kingbasees·数据库平替用金仓·金仓数据库
七夜zippoe5 小时前
Rust `std::iter` 深度解析:`Iterator` Trait、适配器与性能
开发语言·算法·rust