对Windows服务和GUI使用相同的app.config

时间:2012-02-08 12:07:03

标签: c# user-interface windows-services app-config

我有运行Windows服务正在使用它的app.config获取一些重要的值。现在我想提供一个不同的GUI应用程序,它提供了一种更改这些重要值并​​将其保存到同一app.config的方法。

我的问题是:是否可以通过使用“添加为链接”在项目之间共享此app.config,如果我然后使用我的GUI应用程序并更改某些值,这将反映在Windows服务中?

编辑: 如果这样可行,那么也许有人也会在更技术性的视图中了解链接的工作原理?

3 个答案:

答案 0 :(得分:4)

两个项目都可以共享相同的app.config。不确定链接,但您可以在两个不同的配置中具有相同的结构和值,但在部署时,将其部署在与Windows服务相同的文件夹中

现在关于更新app.config的值,如果win服务正在运行,它们将不会反映在Windows服务中。您需要重新启动Windows服务。因为应用程序设置缓存在内存中,并在应用程序启动时加载到内存中。您可以使用ConfigurationManager.RefreshSection刷新内存中已加载的配置。您可以在MSDN上阅读相关信息。您必须在Windows服务中执行此操作。

希望此信息可以帮助您。

答案 1 :(得分:0)

如果您的GUI应用程序不依赖于app.config中的任何值(即只是编辑它),并且您计划从与服务相同的文件夹启动GUI应用程序,您可以像任何一样打开它(文本/ xml)文件(甚至可能包含文件打开对话框)。

根据您的VCS,您可以将app.config从您的Windows服务项目“链接”到您的GUI应用程序项目 - 我个人使用SubVersion将使用Externals执行此操作。

答案 2 :(得分:0)

一般来说,每三分之一的“Windows服务”调用app就会使用Windows应用程序项目部署的配置文件。多亏了这一点,当前的配置取决于起始项目(可能是wf,wpf,web ...)。

只需记住设置要与应用程序一起部署的其他配置文件

属性 - >复制到输出文件夹 - >始终复制 如果查看已部署的应用程序目录,这种行为很容易理解。它包含所有项目的dll以及配置为复制到最终文件夹的所有其他文件。默认情况下,每个项目对这些文件具有相同的访问权限,因为它们都在同一位置。

但要了解Amar Palsapure关于appconfig数据如何缓存的内容。