ConfigurationManager.OpenExeConfiguration 默認操作輸出目錄 (bin\Debug\App.config),需修改源碼目錄下的 App.config。
var fileMap = new ExeConfigurationFileMap {
ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\App.config")
// 或絕對路徑:@"D:\Projects\MyApp\App.config"
};
var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
// 修改
config.AppSettings.Settings["Key"].Value = "NewValue";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings"); // 僅影響當前進程緩存
..\..\ 適用於 bin\Debug\ 下運行時回溯到項目根目錄;發布後路徑結構變化需調整。App.config 設置為「內容」+「如果較新則複製」,否則源文件不會隨輸出更新。RefreshSection。
優點:不鎖定主配置文件,便於運行時熱更新、Docker 掛載、CI/CD 替換。
App.config,構建自動複製到輸出目錄。ExeConfigurationFileMap 並提示用戶重啟。