如何在灌注时更改 App.config 文件?

Posted

技术标签:

【中文标题】如何在灌注时更改 App.config 文件?【英文标题】:How to Change App.config file at Instillation? 【发布时间】:2011-12-06 16:56:57 【问题描述】:

我有两个配置一个是“connectionStrings”另一个是“system.serviceModel”我想在运行时更改你的配置。这是我的配置:

<connectionStrings>
  <add name="Procesta.serverSideService.Properties.Settings.Cafeteria_Vernier_dbConnectionString"
  connectionString="Data Source=SHUVO0\SQLEXPRESS;Initial Catalog=Cafeteria_Vernier_db;Integrated Security=True"
  providerName="System.Data.SqlClient" />
</connectionStrings>

<system.serviceModel>
 <services>
  <service name="Procesta.serverSideService.ServerSideServices">
    <endpoint address="net.tcp://localhost:9000/ServerSideServices"
              binding="netTcpBinding"
              bindingConfiguration=""
              name="CustomersService_Tcp"
              contract="Procesta.serverSideService.IServerSideServices" />
  </service>
</services>

我想将 connectionString "Data Source=SHUVO0\SQLEXPRESS;Initial Catalog=Cafeteria_Vernier_db;Integrated Security=True" 更改为 "Data Source=HASAN589\SQLEXPRESS;Initial Catalog=Cafeteria_Vernier_db;Integrated Security=True"

并将“net.tcp://localhost:9000/ServerSideServices”地址改为“net.tcp://192.168.1.1:9000/ServerSideServices”

感谢您的帮助。

【问题讨论】:

运行时间还是部署时间? 我不认为在代码执行期间更改配置是一个好主意。有没有想过只使用 2 个部署? 【参考方案1】:

不要。使用您自己的配置文件,然后在 app.config 之外进行设置....从 app.config 中隔离用户/安装特定设置有很多好处。

【讨论】:

【参考方案2】:

我认为能够在运行时更改设置,它们必须在用户范围内,而不是应用程序,您不能在运行时更改它,并且 ConnectionString 设置默认在应用程序范围内,并且无法更改(不过,我不知道服务设置)。

您的设置真的是“动态的”吗?您不能在安装期间分配它们,或者在关闭应用程序期间进行更改(并要求用户“重新启动应用程序以进行更改”?)。或者,您可以在设置中再添加一个替代连接字符串,并在运行时根据需要在两者之间进行更改。

【讨论】:

【参考方案3】:

您可以制作不同的目标并使用配置转换。例如。您可以从发布目标创建一个发布目标,并为此目标设置一个特定的配置,您可以使用 Web 配置转换应用该配置。查看此 q/a 的前两个答案:App.Config Transformation for projects which are not Web Projects in Visual Studio 2010?

【讨论】:

以上是关于如何在灌注时更改 App.config 文件?的主要内容,如果未能解决你的问题,请参考以下文章

App.config 中的更改不会在重新启动应用程序后反映出来

在运行时更改 App.config

在 VB.net 中,如何保存对 app.config 的更改

从 web./app.config 更改动态 Web 引用

怎样动态更改App.config中的配置

在运行时更改连接字符串并重新加载 app.config