2021年4月11日 星期日

[C#] 以程式更新app.config之AppSettings保留註解(By XDocument)

[C#] 以程式更新app.config之AppSettings保留註解(By XDocument)

更新app.config之appSettings(不保留註解)

  • 原app.config內容
    原app.config內容

  • 執行程式

    class Program
    {
        static void Main(string[] args)
        {
            // 寫入config序號
            UpdateSetting("TestSerial", "02");
        }
    
    
        /// <summary>
        /// 更新App.Config 中AppSetting 
        /// </summary>
        /// <param name="key">AppSetting Name</param>
        /// <param name="updateValue">AppSetting Value</param>
        private static void UpdateSetting(string key, string updateValue)
        {
            Configuration configuration =     ConfigurationManager.OpenExeConfiguration(    Assembly.GetExecutingAssembly().Location);
            configuration.AppSettings.Settings[key].Value = updateValue;
            configuration.Save();
        }
    }
    
  • 更新後app.config內容(註解被清除)
    更新後app.config內容(註解被清除)

更新app.config之appSettings(保留註解)

  • 原app.config內容
    原app.config內容

  • 執行程式

    class Program
    {
        static void Main(string[] args)
        {
            // 寫入config序號
            SaveSettingByXDocument("TestSerial", "02");
        }
    
        /// <summary>
        /// 新增/更新App.Config 中AppSetting 
        /// </summary>
        /// <param name="key">AppSetting Name</param>
        /// <param name="updateValue">AppSetting Value</param>
        private static void SaveSettingByXDocument(string key, string value)
        {
            Configuration configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
            var configPath = configuration.AppSettings.ElementInformation.Source;
    
            // 讀取config檔案
            XDocument document = XDocument.Load(configPath);
            if (document?.Root == null)
            {
                return;
            }
    
            // 取得appSettings節點
            XContainer appSettings = document.Element("configuration").Element("appSettings");
    
            // 取得指定key的節點
            XElement appSetting = appSettings.Elements("add").FirstOrDefault(x => x.Attribute("key").Value == key);
            if (appSetting != null)
            {
                appSetting.Attribute("value").Value = value;
                document.Save(configPath);
            }
            else
            {
                // 新增config設定
                appSettings.Add(new XElement("add",
                                    new XAttribute("key", key),
                                    new XAttribute("value", value)));
    
                document.Save(configPath);
            }
    
        }
    }
    
  • 更新後app.config內容(註解保留)
    更新後app.config內容(註解保留)



如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)

2021年4月10日 星期六

Markdown轉Pdf時插入換頁符號

Markdown轉Pdf時插入換頁符號

Markdown轉Pdf時插入換頁符號

Markdown轉成Pdf檔案,如有換頁需求可輸入

<div style="page-break-after: always;"></div>

Markdown PDF可正常換頁


如有錯誤或建議,歡迎留言指教,謝謝!!

(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)