如何在灌注时更改 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 中的更改不会在重新启动应用程序后反映出来