我写了一个自定义构建任务,它从App.config文件中的appsettings中读取值。当我将任务编译为可执行文件并运行它时,任务完美无缺。从配置文件中读取正确的值。但是当我将它编译为程序集并从我的构建脚本中的目标运行它时,我得到一个System.NullReferenceException。 foreach循环中发生异常,因为配置管理器返回null。
IEnumerable<string> tables = ConfigurationManager.AppSettings.GetValues(key);
foreach (string txt in tables)
{
Logic.....
}
我正在调用自定义任务,因为我注释了该问题并且它已成功构建。
有谁知道为什么会这样?或者如果我甚至能够将App.config文件与自定义构建任务一起使用?
提前致谢
答案 0 :(得分:1)
如果将项目编译为库,则会从调用可执行文件的app.config中读取。如果您将项目编译为可执行文件,那么它将从它自己的app.config中读取。
答案 1 :(得分:1)
如果有人有兴趣,我使用以下代码访问自定义配置
private static string[] GetConfigFile()
{
var map = new ExeConfigurationFileMap();
map.ExeConfigFilename = @"C:\ConfigFile.config";
config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
return config.AppSettings.Settings.AllKeys;
}
上面的代码从指定的配置文件中获取密钥列表。 返回值存储在一个字符串数组中,我使用foreach循环运行,如下所示
string[] keyNames = GetConfigFile();
foreach (string keys in keyNames )
{
KeyValueConfigurationElement keyval = config.AppSettings.Settings[keys];
Console.WriteLine(keyval.Value);
}