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 。

相关推荐
2401_831824966 分钟前
使用Fabric自动化你的部署流程
jvm·数据库·python
Sunshine for you12 分钟前
C++中的职责链模式实战
开发语言·c++·算法
njidf25 分钟前
Python日志记录(Logging)最佳实践
jvm·数据库·python
twc82925 分钟前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
@我漫长的孤独流浪25 分钟前
Python编程核心知识点速览
开发语言·数据库·python
2401_8512729927 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
qq_4160187232 分钟前
C++中的状态模式
开发语言·c++·算法
2401_8845632433 分钟前
模板代码生成工具
开发语言·c++·算法
枕布响丸辣33 分钟前
MySQL 从入门到精通:完整操作手册与实战指南
数据库·mysql
code 小楊39 分钟前
yrb 1.5.0 正式发布:Python 极简国内下载加速与全景可视化终端体验!
开发语言·python