我在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
文件以更新版本在客户端配置文件中。然后他们失去了他们的连接设置,我不希望客户端必须重新输入它。
我的问题:
是否有最佳做法可以解决此问题?我应该把连接字符串放在其他地方吗?
答案 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文件中保存所需的所有连接数据,以便在预先部署更新版本时不会覆盖。