【问题标题】:.NET App.Config issues across multiple projects跨多个项目的 .NET App.Config 问题
【发布时间】:2011-06-12 19:50:47
【问题描述】:

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

问题是如果需要对服务进行配置更改,当从测试器调用服务方法时,配置不会采用新的设置。将使用构建项目的任何设置。我无法让测试人员识别出服务的 app.config/exe.config 已更改,并且应该重新加载和使用新配置,而不是在 Visual Studio 中构建项目时使用的任何配置。也许我对这个主题的了解不够,但在我看来 app.config 在构建时会汇总到由服务创建的 .exe 文件中。

我试过封装Service的Reload方法并调用它,似乎没有什么区别。

我有一个示例项目,在非常基本的层面上执行上述描述。理想的目标是能够即时修改 exe.config 文件,并让服务和测试人员毫无问题地拾取它们。如果您想从编码的角度确切了解我的意思,可以在此处找到示例项目:example solution

任何帮助将不胜感激。感谢您的宝贵时间。

更新

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

【问题讨论】:

    标签: c# .net settings app-config


    【解决方案1】:

    【讨论】:

    • 我尝试使用 ConfigurationManager 和您上面提到的功能,但它似乎没有按我需要的方式工作。我没有使用配置管理器来获取我的配置值,而是使用应用程序设置,因此命名空间本身的 using 语句位于类的顶部,并且配置选项的访问方式如下:[ProjectName].Properties.Settings。 Default.[SettingName] 感谢您的回复。您还有其他想法吗?或者我可能误解了您的回答?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2010-11-24
      • 2011-05-22
      • 2010-12-17
      • 1970-01-01
      • 2013-11-23
      相关资源
      最近更新 更多