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

如何通过GetExecutingAssembly()可靠动态获取配置文件夹完整路径?

动态获取配置文件夹路径的最优方案

方案一:基于应用程序基目录(推荐)

直接使用AppDomain.CurrentDomain.BaseDirectory获取程序部署的根目录,再结合配置文件夹相对于根目录的直接相对路径(无需../../这类层级跳转),最后用Path.GetFullPath解析成完整路径。这种方式不依赖程序集的具体存放位置,适配所有部署场景。

示例代码:

// 获取程序部署根目录
string appBaseDir = AppDomain.CurrentDomain.BaseDirectory;
// 配置文件夹相对于根目录的路径(比如根目录下的Core/api/data)
string configRelativePath = @"Core/api/data/";
// 生成完整路径
string fullConfigPath = Path.GetFullPath(Path.Combine(appBaseDir, configRelativePath));

方案二:基于程序集目录的相对定位

如果配置文件夹和程序集的相对位置固定(比如始终在程序集所在目录的上两级),可以先获取程序集所在目录,再通过Path.GetFullPath自动解析层级跳转,避免依赖特定文件夹名称(比如/Assembly/)。

示例代码:

// 获取程序集所在的文件夹路径
string assemblyDir = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
// 从程序集目录向上两级,再定位到api/data
string fullConfigPath = Path.GetFullPath(Path.Combine(assemblyDir, @"../../api/data/"));

Path.GetFullPath会自动处理路径中的../,无论程序集在什么目录下,只要相对层级正确就能得到有效路径。

方案三:嵌入资源(适合单个配置文件)

如果配置文件数量少,可以将其设置为嵌入资源(在文件属性里设置“生成操作”为“嵌入的资源”),直接通过程序集读取,完全避开路径问题:

示例代码:

var assembly = System.Reflection.Assembly.GetExecutingAssembly();
// 资源名称格式:命名空间.文件夹.文件名,比如MyProject.Core.api.data.config.json
using Stream stream = assembly.GetManifestResourceStream("MyProject.Core.api.data.config.json");
// 读取流内容
using StreamReader reader = new StreamReader(stream);
string configContent = reader.ReadToEnd();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:40:20