如何让C#生成的DLL文件自动读取同目录下的XML配置文件
C# DLL动态读取同目录XML配置文件解决方案
常见错误说明:多数同目录配置读取失败的原因是误用了
Directory.GetCurrentDirectory()或者直接写相对路径"conf.xml",这两种写法默认基于调用DLL的主程序的工作目录,而非DLL自身所在目录,会导致配置文件找不到。
实现代码
首先需要引入对应的命名空间:
using System.Reflection; using System.IO; using System.Xml.Linq;
步骤1:动态获取DLL自身所在目录
// 获取当前运行的DLL对应的程序集实例 Assembly currentDllAssembly = Assembly.GetExecutingAssembly(); // 获取DLL文件的完整物理路径 string dllFullPath = currentDllAssembly.Location; // 提取DLL所在的文件夹路径 string dllFolderPath = Path.GetDirectoryName(dllFullPath); // 拼接得到配置文件的完整路径 string configFilePath = Path.Combine(dllFolderPath, "conf.xml");
步骤2:读取XML配置内容
这里以更简洁的LINQ to XML为例:
// 加载XML配置文件 XDocument configDoc = XDocument.Load(configFilePath); // 示例:读取指定节点的配置值 var targetSetting = configDoc.Descendants("你的自定义节点名").FirstOrDefault()?.Value;
配套设置(原项目编译阶段配置)
- 把
conf.xml放到类库项目的根目录下,右键点击文件选择「属性」,设置「复制到输出目录」为如果较新则复制,编译时会自动把配置文件和DLL同步输出到bin目录,不需要手动拷贝。 - 如果DLL需要放到
C:\Program Files (x86)这类系统权限目录,调用DLL的主程序需要以管理员身份运行,否则会触发权限不足的读取错误。
内容的提问来源于stack exchange,提问作者AlexDevelop29
相关产品推荐
相关产品推荐

