如何存储可部署的c#应用程序的设置?

时间:2010-07-09 13:10:03

标签: c# .net configuration-files resx application-settings

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

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

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

6 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

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

  • 对于普通用户,您可以制作一个自定义GUI,使其易于使用。
  • 对于高级用户,如果配置存储在文本文件(ini文件,配置文件等等)中,他们可以使用文本编辑器编辑配置,或者您可以创建API。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

您还有其他一些未包含的选项。您可以使用更容易让最终用户理解的旧式.INI文件。您也可以使用注册表。我会推荐INI文件,除非你的用户非常精明,在这种情况下使用.config文件。

答案 5 :(得分:0)

答案取决于部署方法。例如,如果您使用的是ClickOnce并提供更新,则可能会使用Application Settings来解决问题。

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