我目前正在通过* .exe可执行文件更新一个相当大的* .exe.config文件中的一些设置,方法是使用XLinq导航目录并读取/写入值。更新此方法的问题是更改仅在重新启动可执行文件后生效,但我希望更改立即生效。有没有办法告诉可执行文件在我进行更改后重新加载* .exe.config文件?
所有帮助都表示赞赏,并提前致谢!
app.config的外骨骼
<configuration>
<system.serviceModel>
<!-- stuff... -->
<client>
<!-- this is the section I changed and want to have updated -->
</client>
</system.serviceModel>
</configuration>
编辑:我对此主题知之甚少的原因之一是我没有创建app.config - 它是由其他人的代码自动生成的。我必须更改它并让更改在应用程序中生效的原因是代码的另一部分(我无权访问)调用配置文件来获取其数据,但如果我不重新加载然后将使用旧设置,这将不适用于此应用程序。
EDIT2:如果我无法动态更改,我该如何更改代码以便动态完成?最佳答案获得赏金......
答案 0 :(得分:1)
在应用程序运行时,可以轻松存储和检索范围为“用户”的设置。如果您的设置属于“应用程序”范围,我担心您无法在不重新启动应用程序的情况下修改和重新加载它们。您需要自己推出自己的配置解决方案。
答案 1 :(得分:1)
答案 2 :(得分:1)
基本上,Microsoft以这种方式设计它(在启动时读取配置而不是再次读取),特别是为了阻止你尝试这个,因为* .config文件存在于C:\ Program Files文件夹中,那应该是不可由非管理员写入。
答案 3 :(得分:1)
var client =
System.ServiceModel.ChannelFactory<ISampleService>(
System.ServiceModel.Channels.Binding binding,
System.ServiceModel.EndpointAddress remoteAddress)
您也可以通过编程方式连接到服务,并直接为WCF提供所需的配置。
使用它,你不再需要exe中的wcf配置。