首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 修改項目目錄下 App.config(而非輸出目錄)的方法

     編輯:程式設計綜合問答

問題

ConfigurationManager.OpenExeConfiguration 默認操作輸出目錄 (bin\Debug\App.config),需修改源碼目錄下的 App.config。

方案:ExeConfigurationFileMap 指定路徑

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。
  • 多實例併發:若多進程同時寫入,需文件鎖或集中化配置中心 (Consul/Apollo/Nacos)。

替代方案:外部配置文件



  



優點:不鎖定主配置文件,便於運行時熱更新、Docker 掛載、CI/CD 替換。

最佳實踐建議

  1. **開發期**修改源碼 App.config,構建自動複製到輸出目錄。
  2. **運行期**配置變更走**外部配置文件**或**配置中心**,避免直接寫入二進制目錄文件。
  3. 若必須運行期修改源碼配置(如安裝向導),使用上述 ExeConfigurationFileMap 並提示用戶重啟。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved