2013-04-24 40 views
0

我有一个简单的C#控制台应用程序,需要从app.config文件中提取几个值。问题是它似乎打开一个单独的,隐藏的配置文件,我无法找到或找出如何解决。错误的app.config加载

下面是我在做什么,有一些额外的废话添加和名称改变我一直在使用试错了这一点:

 
var configPath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; 

var fileMap = new ExeConfigurationFileMap(); 

fileMap.RoamingUserConfigFilename = configPath; 
fileMap.ExeConfigFilename = configPath; 
fileMap.LocalUserConfigFilename = configPath; 

var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

ConfigurationSection section = config.GetSection("appSettings"); 

section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication; 

section.SectionInformation.UnprotectSection(); 
section.SectionInformation.ForceSave = true; 
string value = config.AppSettings.Settings["ValueHere"].Value; 
string otherValue = ConfigurationManager.AppSettings["ValueHere"].ToString(); 

的用configPath指向正确的路径在哪里包含app.config文件位于。 app.config的名称是APPLICATION_NAME.exe.config。

如果我删除配置文件,应用程序将愉快地返回值,所以我100%肯定它引用了一些其他文件,我只是不知道该文件在哪里或如何解决它。

在调试中运行应用程序指向正确的路径,但当然这位于bin - > debug文件夹中,并且很少使用。只有在安装测试和生产时才会发生此问题。

编辑:文件夹内容中只有一个app.config文件。应用程序正在搜索并在其他地方找到另一个。

+0

在“[Pragmatic Programmer](http://pragprog.com/the-pragmatic-programmer/extracts/wizards)”中,Hunt和Thomas说,如果不理解它,不要使用生成的代码。我会补充一点,不要在不理解它的情况下使用生成的代码。换句话说,请在制作自己的设置代码之前查看设置设计器的功能。 – 2013-04-24 20:21:01

回答