在安装时更改app.config

如何动态更改app.config文件中的connectionString?

我有一个用Windows窗体,c#3.0和Linq到Sql编写的应用程序。 我需要在安装应用程序时更改连接字符串。 我是怎么做到的

当用户安装程序时,它必须显示一个表单,如果存在,则可以选择更改连接字符串,如果不存在则添加一个。

如果您使用的是.NET部署项目,则可以使用“自定义操作”来实现此目的。

使用安装程序中的设置使用appSettings块编写辅助配置文件。 在主配置文件中,使用appSettings中的file属性引用第二个配置文件,如下所示:

 

辅助配置中的设置将覆盖主配置中的任何匹配键。

在安装程序中:

 public override void Install(IDictionary stateSaver) { base.Install(stateSaver); string server = Context.Parameters["Server"]; string port = Context.Parameters["Port"]; string targetDir = Context.Parameters["TargetDir"]; // Build your connection string from user-input parameters and add them to dictionary WriteAppConfig(targetDir, server, port); } private void WriteAppConfig(string targetDir, string server, string port) { string configFilePath = Path.Combine(targetDir, "User.config"); IDictionary userConfiguration = new Dictionary(); userConfiguration["Server"] = server; userConfiguration["Port"] = port; ConfigGenerator.WriteExternalAppConfig(configFilePath, userConfiguration); } public class ConfigGenerator { public static void WriteExternalAppConfig(string configFilePath, IDictionary userConfiguration) { using (XmlTextWriter xw = new XmlTextWriter(configFilePath, Encoding.UTF8)) { xw.Formatting = Formatting.Indented; xw.Indentation = 4; xw.WriteStartDocument(); xw.WriteStartElement("appSettings"); foreach (KeyValuePair pair in userConfiguration) { xw.WriteStartElement("add"); xw.WriteAttributeString("key", pair.Key); xw.WriteAttributeString("value", pair.Value); xw.WriteEndElement(); } xw.WriteEndElement(); xw.WriteEndDocument(); } } } 

看看这个问题 。 它具有通过代码动态更改app.config中的值所需的内容。