正确使用app.config

时间:2014-04-23 10:30:46

标签: c# app-config manifest

在几个C#项目中,我一直在使用app.config文件将各种设置传递给我的程序,连接字符串,功率级别等设置。

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

示例:

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

所以我的问题是:

  • exe.manifest文件的确切作用是什么
  • 每次创建新的.exe时,我都必须在输出文件夹中粘贴除.exe文件以外的任何内容吗?
  • 获取设定值的区别在于:ConfigurationManager.'settingName'...而不是: Properties.Settings.Default.'settingName'
  • app.config build action的作用是什么?

抱歉,如果我在一个问题中要求太多。

3 个答案:

答案 0 :(得分:6)

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一起使用,它为应用程序设置提供编辑器。使用生成的类在代码中访问设置。添加设置将向此类添加属性,并且此属性是从app.config文件中的值初始化的。

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

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

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

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

答案 1 :(得分:0)

有相关的资源。

请参阅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是一个非常强大的工具。它解决了许多问题,如版本控制,迁移,升级等,但这需要从上面的链接中深入阅读。

答案 2 :(得分:-1)

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