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

C#核心项目获取类旁配置文件相对路径(避免硬编码)

解决C#类库中获取同级配置文件路径(避免硬编码)的方案

针对你的项目结构(Awesome.Core类库的Selenium文件夹下有ZSelenium.cs和seleniumconfig.json,被多个其他项目引用),这里有几个实用方案,完全不用写那种容易出错的../../../硬编码路径:

方案1:基于程序集位置动态获取路径

这个方案适合需要让高级用户能找到并修改配置文件的场景,核心思路是通过类所在的程序集位置,拼接出配置文件的路径。

步骤:

  1. 右键seleniumconfig.json → 属性 → 设置复制到输出目录为「始终复制」或「如果较新则复制」。这样项目编译时,配置文件会跟着程序集一起输出到调用项目的bin目录下的Selenium文件夹里。
  2. 在ZSelenium.cs中加入以下代码:
using System.IO;
using System.Reflection;

// 获取当前类所在程序集的路径
var assembly = typeof(ZSelenium).Assembly;
var assemblyDir = Path.GetDirectoryName(assembly.Location);
// 拼接配置文件的完整路径
var configFilePath = Path.Combine(assemblyDir, "Selenium", "seleniumconfig.json");

// 之后就可以用这个路径读取配置文件了,比如:
var configContent = File.ReadAllText(configFilePath);

原理:

不管哪个项目引用了Awesome.Core,编译后ZSelenium.cs对应的程序集都会输出到调用项目的bin目录,而配置文件也会被复制到同目录的Selenium子文件夹下,所以通过程序集位置拼接的路径永远是正确的。

方案2:将配置文件嵌入程序集(适合不想暴露文件的场景)

如果希望配置文件被打包到程序集里,不单独存在(但仍允许高级用户通过反编译或替换程序集修改),可以用嵌入资源的方式:

步骤:

  1. 右键seleniumconfig.json → 属性 → 设置生成操作为「嵌入的资源」。
  2. 在ZSelenium.cs中读取嵌入的资源:
using System.IO;
using System.Reflection;
using System.Text;

var assembly = typeof(ZSelenium).Assembly;
// 嵌入资源的名称格式:项目默认命名空间 + 文件夹名 + 文件名
// 比如你的项目默认命名空间是Awesome.Core,那资源名就是Awesome.Core.Selenium.seleniumconfig.json
var resourceName = "Awesome.Core.Selenium.seleniumconfig.json";

using (var stream = assembly.GetManifestResourceStream(resourceName))
{
    if (stream == null)
    {
        throw new FileNotFoundException("未找到嵌入的配置文件,请检查资源名称是否正确");
    }
    using (var reader = new StreamReader(stream, Encoding.UTF8))
    {
        var configContent = reader.ReadToEnd();
        // 解析配置内容,比如用System.Text.Json或Newtonsoft.Json
    }
}

调试小技巧:

如果不确定嵌入资源的准确名称,可以用assembly.GetManifestResourceNames()获取所有嵌入资源的列表,找到对应的配置文件名称。

注意事项

  • 方案1中一定要记得设置配置文件的复制属性,否则文件不会出现在调用项目的输出目录,会导致找不到文件。
  • 若使用.NET Core/.NET 6+,typeof(ZSelenium).Assembly比Assembly.GetExecutingAssembly()更可靠,能确保获取的是类库程序集,而不是调用项目的程序集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:59:35