<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
應用程式組態檔(App.config)是標準的 XML 檔案,XML 標記和屬性是區分大小寫的。它是可以按需要更改的,開發人員可以使用組態檔來更改設定,而不必重編譯應用程式。
*.exe.config組態檔樣式:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> </connectionStrings> <appSettings> <add key="ServerIP" value="127.0.0.1"></add> <add key="DataBase" value="WarehouseDB"></add> <add key="user" value="sa"></add> <add key="password" value="sa"></add> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
1.組態檔讀寫類
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Configuration; using System.ServiceModel; using System.ServiceModel.Configuration; namespace XMLDemo1 { public static class ConfigHelper { #region ConnectionStrings //依據連線串名字connectionName返回資料連線字串 public static string GetConnectionStringsConfig(string connectionName) { //指定config檔案讀取 string file = System.Windows.Forms.Application.ExecutablePath; System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file); string connectionString = config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString(); return connectionString; } ///<summary> ///更新連線字串 ///</summary> ///<param name="newName">連線字串名稱</param> ///<param name="newConString">連線字串內容</param> ///<param name="newProviderName">資料提供程式名稱</param> public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName) { //指定config檔案讀取 string file = System.Windows.Forms.Application.ExecutablePath; Configuration config = ConfigurationManager.OpenExeConfiguration(file); bool exist = false; //記錄該連線串是否已經存在 //如果要更改的連線串已經存在 if (config.ConnectionStrings.ConnectionStrings[newName] != null) { exist = true; } // 如果連線串已存在,首先刪除它 if (exist) { config.ConnectionStrings.ConnectionStrings.Remove(newName); } //新建一個連線字串範例 ConnectionStringSettings mySettings = new ConnectionStringSettings(newName, newConString, newProviderName); // 將新的連線串新增到組態檔中. config.ConnectionStrings.ConnectionStrings.Add(mySettings); // 儲存對組態檔所作的更改 config.Save(ConfigurationSaveMode.Modified); // 強制重新載入組態檔的ConnectionStrings設定節 ConfigurationManager.RefreshSection("ConnectionStrings"); } #endregion #region appSettings ///<summary> ///返回*.exe.config檔案中appSettings設定節的value項 ///</summary> ///<param name="strKey"></param> ///<returns></returns> public static string GetAppConfig(string strKey) { //D:Winformxml檔案操作XMLDemo1binDebugXMLDemo1.EXE string file = System.Windows.Forms.Application.ExecutablePath; Configuration config = ConfigurationManager.OpenExeConfiguration(file); foreach (string key in config.AppSettings.Settings.AllKeys) { if (key == strKey) { return config.AppSettings.Settings[strKey].Value.ToString(); } } return null; } ///<summary> ///在*.exe.config檔案中appSettings設定節增加一對鍵值對 ///</summary> ///<param name="newKey"></param> ///<param name="newValue"></param> public static void UpdateAppConfig(string newKey, string newValue) { string file = System.Windows.Forms.Application.ExecutablePath; Configuration config = ConfigurationManager.OpenExeConfiguration(file); bool exist = false; foreach (string key in config.AppSettings.Settings.AllKeys) { if (key == newKey) { exist = true; } } if (exist) { config.AppSettings.Settings.Remove(newKey); } config.AppSettings.Settings.Add(newKey, newValue); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } #endregion #region // 修改system.serviceModel下所有服務終結點的IP地址 public static void UpdateServiceModelConfig(string configPath, string serverIP) { Configuration config = ConfigurationManager.OpenExeConfiguration(configPath); ConfigurationSectionGroup sec = config.SectionGroups["system.serviceModel"]; ServiceModelSectionGroup serviceModelSectionGroup = sec as ServiceModelSectionGroup; ClientSection clientSection = serviceModelSectionGroup.Client; foreach (ChannelEndpointElement item in clientSection.Endpoints) { string pattern = @"bd{1,3}.d{1,3}.d{1,3}.d{1,3}b"; string address = item.Address.ToString(); string replacement = string.Format("{0}", serverIP); address = Regex.Replace(address, pattern, replacement); item.Address = new Uri(address); } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("system.serviceModel"); } // 修改applicationSettings中App.Properties.Settings中服務的IP地址 public static void UpdateConfig(string configPath, string serverIP) { Configuration config = ConfigurationManager.OpenExeConfiguration(configPath); ConfigurationSectionGroup sec = config.SectionGroups["applicationSettings"]; ConfigurationSection configSection = sec.Sections["DataService.Properties.Settings"]; ClientSettingsSection clientSettingsSection = configSection as ClientSettingsSection; if (clientSettingsSection != null) { SettingElement element1 = clientSettingsSection.Settings.Get("DataService_SystemManagerWS_SystemManagerWS"); if (element1 != null) { clientSettingsSection.Settings.Remove(element1); string oldValue = element1.Value.ValueXml.InnerXml; element1.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP); clientSettingsSection.Settings.Add(element1); } SettingElement element2 = clientSettingsSection.Settings.Get("DataService_EquipManagerWS_EquipManagerWS"); if (element2 != null) { clientSettingsSection.Settings.Remove(element2); string oldValue = element2.Value.ValueXml.InnerXml; element2.Value.ValueXml.InnerXml = GetNewIP(oldValue, serverIP); clientSettingsSection.Settings.Add(element2); } } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("applicationSettings"); } private static string GetNewIP(string oldValue, string serverIP) { string pattern = @"bd{1,3}.d{1,3}.d{1,3}.d{1,3}b"; string replacement = string.Format("{0}", serverIP); string newvalue = Regex.Replace(oldValue, pattern, replacement); return newvalue; } #endregion } }
2.Main 函數
namespace XMLDemo1 { class Program { static void Main(string[] args) { try { //D:Winformxml檔案操作XMLDemo1binDebugXMLDemo1.EXE //string file0 = System.Windows.Forms.Application.ExecutablePath; //D:Winformxml檔案操作XMLDemo1binDebugXMLDemo1.EXE.config //string file = System.Windows.Forms.Application.ExecutablePath + ".config"; //D:Winformxml檔案操作XMLDemo1binDebugXMLDemo1.vshost.exe.Config //string file1 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; string serverIP = ConfigHelper.GetAppConfig("ServerIP"); string db = ConfigHelper.GetAppConfig("DataBase"); string user = ConfigHelper.GetAppConfig("user"); string password = ConfigHelper.GetAppConfig("password"); Console.WriteLine(serverIP); Console.WriteLine(db); Console.WriteLine(user); Console.WriteLine(password); ConfigHelper.UpdateAppConfig("ServerIP", "192.168.0.1"); string newIP = ConfigHelper.GetAppConfig("ServerIP"); Console.WriteLine(newIP); ConfigHelper.UpdateConnectionStringsConfig("connstr4", ".......", "System.Data.Sqlclient"); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }
到此這篇關於C#讀寫Config組態檔的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45