状態のドキュメント:ConfigurationManager.OpenExeConfiguration(string exePath)
指定されたクライアント構成ファイルを構成オブジェクトとして開きます。
また、exePath
「実行可能(exe)ファイルのパス」であると述べています
このメソッドは*.exe.config
、 で指定されたパスにある実行可能ファイルのファイルを開くことになっており、「構成ファイルを読み込めませんでした」場合exePath
は aConfigurationErrorsException
がスローされます。
次のコードは非実行可能ファイルのパスを使用しており、そのパスのディレクトリには *.exe.config ファイルが含まれていません。それでも、コードは例外なく実行され、無効な引数の他の兆候もありません。
var configs = Directory.GetFiles("C:\\NoConfig", "*.config");
Debug.Assert(configs.Length == 0);
File.WriteAllText("C:\\NoConfig\\notes.txt", "This is not an executable, and there is no .config file in its folder.");
var config = ConfigurationManager.OpenExeConfiguration("c:\\notes.txt");
Debug.Assert(config != null);
ただし、新しい .NET Core JSON ベースの構成では徐々に非推奨になり、レビューも修正もされません。
では、これはこのOpenExeConfiguration
メソッドのオーバーロードのバグによるものですか?
MS Connect で提起する前に、セカンドオピニオンとn番目のオピニオンが欲しかっただけです。Connect は現在ダウンしています。
追加:有効なファイルを使用して、実際の実行可能ファイル (テスト済み)を呼び出すOpenExeConfiguration
と、ファイルは読み取られますが、解析されません。この回答の回避策を使用して、セクションのxmlをリクエストし、自分で解析する必要があります カスタムファイルからのAppSettings。これは、このコードがこのモードで一般的に使用されておらず、動作するものとして受け入れられ、レビューされていないため、バグがある可能性があるという私の疑念を助長します.exePath
.config
appSettings
新しい .NET Core 構成 API が古い XML のみを置き換えることで、ほとんど注目されなくなると確信しています。