0

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 つしかありません。アプリケーションは、この別のものを別の場所で検索して見つけています。

4

1 に答える 1

1

設定にユーザー スコープがある場合、ユーザーの (ローミング) プロファイルの構成ファイルに書き込まれます。参照: .NET で Settings.settings ファイルを使用する場合、構成は実際にはどこに保存されますか?

そのため、設定のプロパティの範囲を確認してください。

于 2013-04-24T19:10:29.620 に答える