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

C#部署中DLL配置疑问:设置存储位置及是否编译进DLL

DLL配置设置的存储位置与编译逻辑解析

设置的实际存储位置

  • 你用Properties.Settings.Default.mysetting调用的配置,默认不会读取同目录的mydll.dll.config。.NET的配置系统是跟着主EXE走的,只会加载主程序的配置文件(比如yourapp.exe.config),DLL自带的配置文件默认不生效。
  • 你现在改设置必须重编译,是因为你创建的是Application级别的设置——这类设置的值会直接编译进DLL的程序集资源里(嵌入在DLL的.resources资源文件中),运行时优先读这里的内容,完全忽略你放的mydll.dll.config。

设置是否被编译进DLL

  • Application级别设置:会被编译进DLL,部署后改mydll.dll.config没用,必须重新编译DLL才能改值。
  • User级别设置:不会编译进DLL,首次运行时默认值会写入用户专属的配置文件夹(比如C:\Users\[你的用户名]\AppData\Local\[公司名]\[应用名]\[版本号]下的配置文件),后续修改直接改这个文件就行,不用重编译。

让DLL配置文件生效的方法

如果想让mydll.dll.config起作用,有两个可行方案:

  1. 把mydll.dll.config里的配置节点(比如<appSettings>或<userSettings>)复制粘贴到主EXE的配置文件对应位置,DLL运行时会自动从EXE的配置文件读取这些值。
  2. 在DLL代码里手动加载自身的配置文件,示例代码:
var dllConfig = ConfigurationManager.OpenExeConfiguration(typeof(YourDllClass).Assembly.Location);
var mySettingValue = dllConfig.AppSettings.Settings["mysetting"].Value;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:45:41