自定义MSBuild任务不读取App.config [c#]



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

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

我正确地调用了自定义任务,因为我注释了这个问题,它成功地构建了。

有人知道为什么会发生这种情况吗?或者如果我甚至能够使用自定义构建任务的App.config文件?

Thanks in advance

如果您将项目编译为库,则它将从调用可执行文件的app.config中读取。如果你把一个项目编译为可执行文件,那么它会从它自己的app.config中读取。

如果有人感兴趣,我使用以下代码访问自定义配置

 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);
        }

最新更新