0

App.config ファイルの appsettings から値を読み取るカスタム ビルド タスクを作成しました。タスクを実行可能ファイルとしてコンパイルして実行すると、タスクは完全に機能します。正しい値が構成ファイルから読み取られます。ただし、それをアセンブリとしてコンパイルし、ビルド スクリプトのターゲットから実行すると、System.NullReferenceException が発生します。構成マネージャーが null を返すため、foreach ループで例外が発生します。

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

問題をコメントアウトし、正常にビルドされるため、カスタムタスクを正しく呼び出しています。

なぜこれが起こっているのか誰にも分かりますか?または、カスタム ビルド タスクで App.config ファイルを使用することさえできますか?

前もって感謝します

4

2 に答える 2

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);
        }
于 2013-06-06T21:02:37.257 に答える
1

プロジェクトをライブラリとしてコンパイルすると、呼び出し元の実行可能ファイルの app.config から読み込まれます。プロジェクトを実行可能ファイルとしてコンパイルすると、それ自体の app.config から読み込まれます。

于 2013-06-05T23:24:06.770 に答える