访问Properties.Settings DLL中的userSettings

Tar*_*ara 5 .net c#

我的主应用程序的GUI的一个组件是它自己的项目,主应用程序在运行时只使用GUI组件的.dll.由于userSettings存储在GUI组件中app.config,主应用程序没有复制,我无法保存userSettings(没有创建user.config).

我看到的可能的方法是能够将组件存储userSettings在外部配置文件(由其引用app.config)中,该文件在运行时复制到主应用程序的目录,或以某种方式将所有内容userSettings放在主应用程序的级别(因为它.exe.config是复制)并从GUI组件访问它.

但是,我无法使用这些方法中的任何一种来保存userSettings.有任何想法吗?如果需要澄清,请告诉我.

Sim*_*ver 6

您应该能够将Settings主项目属性移动到GUI组件DLL的属性(或者根据需要创建一个Settings.dll).

然后从主应用程序引用此DLL并添加using语句以便您可以访问Settings.Default.然后,您必须更改设置文件的访问修饰符.这有点不明显,但在MSDN文档中进行了解释.这是一个截图:

在此输入图像描述

将此更改为"公开"后,您只需从应用程序的任何位置读取设置即可.

警告:每个正在运行的应用程序不要超过1个设置,因为实现是单例,您将获得意外结果.如果你有一个设置副本,它不需要在.exe dll中 - 它可以在你想要的任何地方.

我假设你不是想在应用程序之间重复使用.


Bon*_*nyT 1

啊 - 可怕的 Properties.Settings!

有几种方法可以解决这个问题,但都涉及一些返工。

最简单 - 使用 appsettings 而不是 ApplicationSettings:将所需的 appsettings 复制到使用它的每个应用程序中。

优点:简单,缺点:配置设置无处不在!

创建自定义配置部分:有很多关于此的文章 -例如,请参阅http://joelabrahamsson.com/entry/creating-a-custom-configuration-section-in-net 。

基本上,您将拥有单独的配置文件,您可以将其复制到需要它的每个可部署项中 - 只需引用在每个需要它的可部署项中创建配置对象的程序集,然后更新应用程序配置文件以引用包含的自定义项配置文件。

优点:整洁,您可以将验证包装在配置对象中,更整洁的配置文件,缺点:设置时间较长。

还有其他方法 - 包括将值存储在 XML 文件中并在运行时将其反序列化为类。使用相同的方法,但存储在数据库中。等等等等