自定义MSBuild任务无法从App.config中读取[C#]

时间:2013-06-05 21:18:30

标签: c# msbuild web-config app-config msbuild-task

我写了一个自定义构建任务,它从App.config文件中的appsettings中读取值。当我将任务编译为可执行文件并运行它时,任务完美无缺。从配置文件中读取正确的值。但是当我将它编译为程序集并从我的构建脚本中的目标运行它时,我得到一个System.NullReferenceException。 foreach循环中发生异常,因为配置管理器返回null。

IEnumerable<string> tables = ConfigurationManager.AppSettings.GetValues(key);
 foreach (string txt in tables)
{
      Logic.....
}

我正在调用自定义任务,因为我注释了该问题并且它已成功构建。

有谁知道为什么会这样?或者如果我甚至能够将App.config文件与自定义构建任务一起使用?

提前致谢

2 个答案:

答案 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);
        }
相关问题