You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core发布后运行获取的目录路径与VS调试时不一致

问题原因

单文件自包含发布的.NET Core/.NET 5+ 应用启动时,会将所有内嵌的程序集资源解压到系统临时目录下运行,你原本使用的Assembly.GetExecutingAssembly().Location获取的是程序集运行时实际加载的磁盘路径,因此会返回临时目录路径,而非你存放exe的实际目录。

正确获取exe所在目录的方案
  • 方案1:使用AppContext.BaseDirectory(兼容所有.NET Core/.NET 版本,最推荐)
    该属性始终返回应用程序的根部署目录,也就是你的exe文件所在的目录,不受单文件发布、调试运行的影响。
    代码示例:

    string currentFolder = AppContext.BaseDirectory;
    
  • 方案2:使用Environment.ProcessPath(适用于.NET 5+ 版本)
    直接获取当前进程对应的exe文件的完整路径,再提取目录即可。
    代码示例:

    string currentFolder = Path.GetDirectoryName(Environment.ProcessPath);
    
注意事项

不要使用Directory.GetCurrentDirectory()来获取exe所在目录,该方法返回的是程序的工作目录:如果你从cmd、快捷方式等位置启动程序时指定了不同的工作目录,该方法返回的结果会和exe实际存放目录不一致。如果你的需求是读取执行命令时当前目录下的txt文件,才选择该方法。

内容的提问来源于stack exchange,提问作者Ismail Hmama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:36:04