3

我想为我的 C# 应用程序存储设置,这样默认设置可以很容易地随我的二进制文件一起提供,最终用户可以使用简单的文本编辑器(或以其他一些简单的方式)更改它们。
我似乎面临几种选择:.config 文件、.settings 文件或 .resx 文件。这些有什么好处和坏处?

Edit1:最终用户主要是计算机专业人员,因此编辑这些文件应该不是什么大问题。

Edit2:设置类似于连接字符串和其他一些参数(主要是一次性的)。构建某种 GUI/API 来更改它们并不是一个真正的选择。此外,我的应用程序不会编辑任何这些值,因此不需要通过代码进行持久性。

4

6 回答 6

4

是的,项目 + 属性,设置选项卡旨在执行此操作。在此处添加您的设置,将范围更改为应用程序。这会在您的构建目录中生成一个 app.exe.config 文件,将其与您的 EXE 一起部署。使用属性。设置。默认值。SettingName在您的代码中获取设置值。您的用户通常需要管理员权限才能编辑目标计算机上的 .exe.config 文件以更改设置值。

小字:设置不适用于 DLL 程序集,您必须手动合并 .config 文件。使用调试器时,将从 app.vshost.exe.config 文件中检索设置。

.settings 文件是 IDE 使用的帮助文件,忽略它。.Resx 文件存储资源,它们被编译并以二进制形式嵌入到程序集中。用户不可编辑它们。

于 2010-07-09T13:45:32.983 回答
1

由于该文件将由用户修改,我认为使用 app.config 不是一个好主意。如果他们破坏了文件结构怎么办?或者设置一个无效的值?您的应用程序可能会直接崩溃。

解决方案之一是使用自定义 XML 文件。然后,您将在应用程序启动时对其进行验证。XSD 可能是更优雅的方法,但您也可以直接解析它并在代码中验证它。如果文件无效,而不是崩溃,您将尝试解决问题,如果不可能,向用户显示一个漂亮的错误,说明在第 n 行位置 n 的 XML 中存在错误[错误描述在这里]

于 2010-07-09T13:48:48.640 回答
1

我认为你可以有两种方法来做到这一点。

  • 对于普通用户,您可以制作一个自定义 GUI,让他们使用起来更简单。
  • 对于高级用户,如果配置存储在文本文件(ini 文件、配置文件等)中,他们可以使用文本编辑器编辑配置,或者您可以制作 API。
于 2010-07-09T13:22:41.820 回答
1

.settings文件通常用于用户特定的首选项和配置信息(而.config文件用于应用程序的全局设置或修改 .Net 运行时的任何内容。只需将参数放入.config文件即可改变行为即使您没有为它编写一行代码,您的应用程序也是如此)。

查看 MSDN 上的设置文章了解更多信息:http: //msdn.microsoft.com/en-us/library/aa730869 (VS.80).aspx

于 2010-07-09T13:29:12.337 回答
0

答案取决于部署方法。例如,如果您使用 ClickOnce 并提供更新,您可能会在使用Application Settings时遇到问题。

我相信最好的方法是创建一个 GUI,这肯定适合新手用户。鉴于您已经排除了该选项,请使用 John 的建议(ini 文件)。

于 2010-07-09T13:45:16.713 回答
0

如果最终用户真的要编辑它们,我不确定我是否希望他们编辑我的 app.config 文件。

你还有另外几个你没有包括在内的选择。您可以使用对最终用户来说更容易理解的老式 .INI 文件。您也可以使用注册表。我会推荐 INI 文件,除非您的用户非常精通,在这种情况下使用 .config 文件。

于 2010-07-09T13:15:08.610 回答