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 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker19923 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
MM_MS3 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
玩泥巴的4 小时前
飞书 .NET SDK 事件处理的幂等性与去重机制
c#·.net·二次开发·飞书
꧁Q༒ོγ꧂4 小时前
LaTeX 语法入门指南
开发语言·latex
njsgcs4 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_994 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
在路上看风景4 小时前
3.2 FileStream
c#
zwm2698888154 小时前
6号楼 部分声光24v电压达不到,显示11v
c#
1.14(java)4 小时前
SQL数据库操作:从CRUD到高级查询
数据库