app.config文件C#winforms保留连接字符串

时间:2014-08-12 04:36:24

标签: c# winforms

我在Winforms应用程序中有一个app.config文件,其中包含一个连接字符串。这是作为单独的文件发送到多个租户(客户端)。这些客户端有不同的数据库源。此配置文件还包含其他版本信息,如EF,Telerik报告等...

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />

<section name="Telerik.Reporting"  
         type="Telerik.Reporting.Configuration.ReportingConfigurationSection, Telerik.Reporting, Version=8.1.14.804, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" 
         allowLocation="true" allowDefinition="Everywhere" />

我遇到的问题是,当我们使用我们的应用程序获得EF或Telerik报告的更新版本并部署(自动部署)时,我们需要覆盖客户端目录中的app.config文件以更新版本在客户端配置文件中。然后他们失去了他们的连接设置,我不希望客户端必须重新输入它。

我的问题:

是否有最佳做法可以解决此问题?我应该把连接字符串放在其他地方吗?

3 个答案:

答案 0 :(得分:4)

是的,最好的办法是将连接字符串部分移动到另一个配置文件,并在app.config中引用该文件。

例如,创建一个名为connectionStrings.config的新文件:

<connectionStrings>
  <add name="Default" connectionString="[client_connection_string] "/>  
</connectionStrings>

在你的app.config文件中:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings configSource="connectionStrings.config" />  
</configuration>

可以找到完整的示例here

答案 1 :(得分:1)

使用从应用程序配置文件引用的外部配置文件。例如。在配置文件中包含此部分。

<configuration>
    <connectionStrings configSource="connections.config"/>
</configuration>

外部配置文件描述为 http://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx

请注意,在工作站上以纯文本格式存储连接设置仍然是一个坏主意。

使用Windows注册表来做这样的事情是最近的禁忌。

答案 2 :(得分:0)

您可以尝试在单独的xml文件中保存所需的所有连接数据,以便在预先部署更新版本时不会覆盖。