如何在两个应用程序之间共享配置设置

How do I share configuration settings between two applications

我有两个用 C# 编写的应用程序。两者都执行相同的基本任务;一个有一个 UI,旨在设置和配置进程,另一个是控制台应用程序,旨在 运行 按计划配置进程。

我在 Visual Studio 中将它们设置为同一个解决方案中的两个不同项目,它们都使用单独的库来完成所有艰苦的工作。让一个应用程序在两种情况下都工作似乎不是推荐的方法,因此我相应地拆分了 UI/Console 变体。

问题是我正在尝试共享配置——只有几个字符串值;它们之间的连接字符串、文件位置等。这是从 UI 版本开始设置的,但控制台项目不能 运行 没有它。

最初我只是在 Application.exe.config 中进行了设置,但是当我使用常规安装程序安装应用程序时,由于文件权限,它在尝试保存配置文件的那一刻就死了。

现在我在共享库中有一个 Settings 对象,这些值作为用户设置可以通过包装器 class 访问,其他项目都可以访问和更新。这解决了我的更新问题,但现在我的控制台应用程序无法读取 UI.

设置的设置值

我可以将它们放在一个配置文件中并手动处理它 - 在这一点上,这可能比尝试以 Windows 方式进行操作要快一些 - 但我觉得这一定是平台以某种方式支持的东西。

我应该如何存储我的配置,以便它可供两个不同的应用程序(在同一个 Visual Studio 解决方案中创建)使用,并且两个应用程序使用的设置可以由用户更新和保存?

如果您想要 built-in 方式,请使用 ConfigurationManager class 来管理您的 app.config(请参阅文档 here)。您可能需要 运行 您的 UI 具有更高的权限才能编辑配置,或者您可以使配置文件特定于用户并将它们存储在每个用户的配置文件下。