我的项目中只有一个app.config,没有web.config
这是一个excel加载项项目,类库中只有一个app.config
但是当我尝试访问appSettings
时,它没有返回我在app.config
中保存的值
我试过
ConfigurationManager.AppSettings["KeyName"]
同样在调试期间ConfigurationManager.connectionString
返回一些值,而没有我保存的连接字符串。
我在整个解决方案中搜索了返回的值,但没有运气
那么有没有办法可以识别出它所指的配置文件是哪个?
P.S我添加了对system.configuration的引用,并添加了该命名空间
答案 0 :(得分:2)
ConfigurationManager.AppSettings ...将默认为应用程序配置文件。在这种情况下,应用程序将是Excel。您需要加载程序集的配置文件。
var configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
var value = config.AppSettings.Settings["KeyName"].Value;
app.config文件会在构建时自动重命名为yourassembly.dll.config - 因此需要上面的第二行。还要注意访问值的代码略有不同,因为我们在这里使用Configuration类型而不是ConfigurationManager直接公开的静态包装器。