app.config ファイルからいくつかの値を取得する必要がある単純な C# コンソール アプリケーションがあります。問題は、別の非表示の構成ファイルを開いているように見えることです。これを見つけることも、修正方法を理解することもできません。
これが私がやっていることです。この時点まで試行錯誤を繰り返してきたので、いくつかの余分ながらくたが追加され、名前が変更されています。
var configPath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; var fileMap = new ExeConfigurationFileMap(); fileMap.RoamingUserConfigFilename = configPath; fileMap.ExeConfigFilename = configPath; fileMap.LocalUserConfigFilename = configPath; var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); ConfigurationSection セクション = config.GetSection("appSettings"); section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication; section.SectionInformation.UnprotectSection(); section.SectionInformation.ForceSave = true; 文字列値 = config.AppSettings.Settings["ValueHere"].Value; string otherValue = ConfigurationManager.AppSettings["ValueHere"].ToString();
configPath は、app.config を含むファイルが配置されている正しいパスを指しています。app.config の名前は APPLICATION_NAME.exe.config です。
構成ファイルを削除すると、アプリケーションは喜んで値を返すので、他のファイルを参照していると100%確信しています。そのファイルがどこにあるか、またはそれを修正する方法がわかりません。
デバッグでアプリケーションを実行すると、正しいパスが示されますが、もちろんそれは bin -> debug フォルダーにあり、ほとんど使用されません。この問題は、インストール テストと本番環境でのみ発生します。
編集: フォルダーの内容には app.config ファイルが 1 つしかありません。アプリケーションは、この別のものを別の場所で検索して見つけています。