.NET App.Config跨多个项目发布

时间:2011-01-20 23:07:27

标签: c# .net settings app-config

我有一个包含两个项目的解决方案。一个项目是Windows服务,其中包含一些用于执行各种功能的类。另一个项目是Windows窗体应用程序,用于执行服务按需完成的各种测试和执行任务。例如,服务将在某个时间间隔执行一些不同的任务,但如果您想在时间间隔过去之前执行其中一个任务,则可以加载Windows窗体应用程序并立即执行其中一个任务。 Windows窗体应用程序(此处称为测试程序)引用Windows服务(此处称为服务)项目。加载测试程序时,它会从服务创建其中一个类的实例。每当按下按钮执行任务时,它都会引用该创建的实例并调用该类的各种方法。服务已使用配置的应用程序设置,因此具有app.config。使用[ProjectName] .Properties.Settings.Default。[SettingName]访问配置设置。当测试仪的配置设置在其自己的app.config(或发布后的exe.config)上更改时,刷新设置没有问题。如果关闭测试仪,修改配置,然后重新打开,则将填充新设置。如果在“设置”上调用“重新加载”方法,则会刷新配置而不会出现问题。服务以相同的方式执行。配置设置可以毫无问题地更新。

问题是如果需要对服务进行配置更改,则从测试仪调用服务方法时,配置不会采用新设置。无论使用什么设置项目都将被使用。我无法让测试人员认识到服务的app.config / exe.config已经改变,并且应该重新加载和使用新配置,而不是在Visual Studio中构建项目时使用的任何配置。也许我对这个主题没有足够的了解,但在我看来app.config被卷入到服务创建的.exe文件中。

我已经尝试封装服务的Reload方法并调用它,它似乎没有什么区别。

我有一个示例项目,如上所述在非常基本的级别上执行。理想的目标是能够动态修改exe.config文件或文件,并让服务和测试程序选择它们没有任何问题。如果您希望从编码角度看到我的意思,可以在此处找到示例项目:example solution

非常感谢任何帮助。谢谢你的时间。

更新

我已经设法找到了解决方案,但是如果有更好的方法,我仍然很好奇。通过使用在两个项目之间共享的app.config并使用Configuration Manager而不是App Settings,一切都按预期工作。如果可能的话,我更喜欢使用App Settings;但是它可以使用共享的app.config,配置管理器指向该app.config。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

找到解决方案。必须在解决方案中添加app.config,如上所述。像这样链接后,您可以将一个设置文件添加到项目中,并将设置/配置添加到项目中,它们将被添加到解决方案设置文件中。这将与构建一起移动并解决我遇到的问题。