正确使用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文件是在运行关联的应用程序时得到特殊处理的文件。如果可执行文件名为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文件,将你的参数放在这个文件中(当然这不是秘密),并在启动应用程序时从中读取所有设置。如果你有一个,你可以把所有的连接字符串逻辑放在登录表单中。。。