正确使用app.config

本文关键字:app config | 更新日期: 2023-09-27 17:59:26

在几个C#项目中,我一直在使用app.config文件向程序传递各种设置,如连接字符串、电源级别等。

然而,有时我会遇到设置没有按预期更新的情况,我得出的结论是,我没有很好地了解app.config文件的正确使用。

示例:

  • 在不更改exe.config的情况下,将.exe文件替换为输出目录的新版本(其中的设置不同)会导致程序看到硬编码的设置,而不是现有的.exe.config的设置

所以我的问题是:

  • exe.manifest文件的确切作用是什么
  • 每次我创建一个新的.exe文件时,我是否必须在输出文件夹中粘贴除.exe文件之外的任何其他内容
  • 通过:ConfigurationManager.'settingName'...而不是:Properties.Settings.Default.'settingName'
  • app.config build action的作用是什么

对不起,如果我在一个问题上问得太多了。

正确使用app.config

app.config文件是在运行关联的应用程序时得到特殊处理的文件。如果可执行文件名为MyApp.exe,则app.config文件应命名为MyApp.exe.config。app.config构建任务的作用是将项目中名为app.config的文件复制到输出目录中的MyApp.exe.config

.NET提供了读取文件内容的方法(它是XML格式的),.NET的各个部分将在该XML中查找不同的部分以提供配置。

一个广泛使用的部分是您称之为Properties.Settings.Default的设置部分。本节与Visual Studio一起播放,Visual Studio为应用程序设置提供了一个编辑器。通过使用生成的类来访问代码中的设置。添加设置将向此类添加一个属性,并且该属性是从app.config文件中的值初始化的。

在Visual Studio编辑器中,您可以为该设置设置一个值,也可以将其视为该设置的默认值。但是,如果覆盖app.config文件中的值,则后面的值将优先。这允许您在安装后修改app.config文件,并使用修改后的设置重新运行应用程序。

您也可以使用其他方法访问app.config文件中的应用程序设置,但在我看来,使用Visual Studio编辑器和代码生成类是最好的方法。

我不确定我是否完全理解你所经历的问题。如果更新MyApp.exe并保持MyApp.exe.config不变,则应用程序使用的设置不会发生更改(当然,除非您重命名或更改了某些设置)。

清单文件提供有关并行程序集的信息,可用于请求提升的权限等。这与app.config文件无关。

有很多关于这方面的资源。

请参阅http://msdn.microsoft.com/en-us/library/ms229689%28v=vs.90%29.aspx

以及(更好的)概述:http://msdn.microsoft.com/en-us/library/k4s6c3a0%28v=vs.110%29.aspx

app.config是一个非常强大的工具。它解决了许多问题,如版本控制、迁移、升级等,但这需要从上面的链接中深入阅读。

如果你想在每次构建应用程序时只复制.exe文件,你可以做一件事,那就是制作一个settings.ini或settings.txt文件,将你的参数放在这个文件中(当然这不是秘密),并在启动应用程序时从中读取所有设置。如果你有一个,你可以把所有的连接字符串逻辑放在登录表单中。。。