4

有没有办法从代码中检索 configSource?我创立了How to programmatically retrieve the configSource Location from config file,但所有答案都是错误的。

我有以下配置:

<configuration>
  <appSettings configSource="appsettings.config"/>
</configuration>

当我尝试调用以下代码时:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.File;

file总是空的。对于ConfigurationManager.AppSettings["configSource"]. 我认为 .NET 4 发生了一些变化,因为答案是旧的。我也试过config.AppSettings.SectionInformation.ConfigSource,但它也是空的。

我需要这条路径来启用对appSettings. 你可以阅读更多:如何发现 C# 中的 appsettings 发生了变化?

4

1 回答 1

3

我对此有一些问题,但我终于找到了答案。

当配置文件看起来像这样时:

<configuration>
  <appSettings file="appsettings.config"/>
</configuration>

上面的代码工作正常:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.File;

但是当配置文件是(它的工作方式与上面相同但语法不同):

<configuration>
  <appSettings configSource="appsettings.config"/> <!-- configSource instead of file -->
</configuration>

我必须使用以下内容:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.SectionInformation.ConfigSource;

所以我必须检查是否不是一个空字符串并监控正确的字符串config.AppSettings.SectionInformation.ConfigSourceconfig.AppSettings.File

于 2013-08-14T12:24:59.190 回答