c#发布后没有相关的app.config

时间:2013-02-07 11:10:05

标签: c# configuration app-config

有人可以告诉我如何用app.config来对待吗?当我在app.Properties中创建一些值时,它就会自行创建。我将代码文件设置为“CopyAlways”。但是,当我在调试或发布模式下编译应用程序时,编辑配置manualy(使用记事本)并启动应用程序,它的行为就像配置文件中没有任何更改。我试图更改app.config,appname.exe.config甚至appname.vschost.exe.config。

对我来说更有趣的是,我可以构建一个应用程序,然后将源文件(appname.exe和dll文件)复制到任何新文件夹,并启动应用程序。它连接到服务器,尽管事实上,没有配置,存储IP的位置。

我发现只有在运行时通过代码更改app.config的问题。但这不是我想要的。我有数据配置,不会改变很多。和.settings for user settings(datagrid中的记录颜色等)。

我认为,每次应用程序启动时都会读取配置。我是否真的必须创建自己的配置文件,该文件将与exe在同一文件夹中,并且每次应用程序启动时都会读取该文件?

我在msdn上找到的只有如何创建app.config的支持。

3 个答案:

答案 0 :(得分:0)

您无需复制app.config或将其设置为“CopyAlways”。

当您构建visual studio copy时,它会自动将其重命名为applicationName.exe.config

所以,如果您的应用是:MyApplication.exe,您应该在bin中找到文件MyApplication.exe.config

您将app.config与存储在UserProfile目录中的user.config文件中的应用程序设置混淆。

Application Settings Overview

Application Settings Architecture

它们用于存储用户偏好,如backgroundcolor,可视化偏好等等

相反,如果您希望配置值易于更改,则应使用app.config中的appSettings节点

    <appSettings>
    <add key="ServerIp" value="0.0.0.0"/>
</appSettings>

并从您的代码中访问它:

ConfigurationManager.AppSettings["ServerIp"]

ConfigurationManager.AppSettings

答案 1 :(得分:0)

UserScope中的应用程序设置存储在Application.LocalUserAppDataPath下(通常这是C:\Documents and Settings\username\Local Settings\Application Data\作为基本路径+以下架构\CompanyName\ProductName\ProductVersion)。因此,当您运行应用程序时,user.config将存储在此文件夹中,并用于进一步启动应用程序。

如果在上面的路径中找不到user.config,则应用程序的app.config仅包含默认值。

如果您的应用程序有.config文件,请打开资源管理器并检查Application.LocalUserAppDataPath的路径。如果是,请将其删除或更改此文件中的设置。

答案 2 :(得分:0)

您不应将 App.config 的属性更改为“始终复制”。

构建应用程序时,编译器会在输出目录中创建一个 YourAppName.exe.config 文件,该文件包含与 App.config 文件完全相同的值。

如果您以后更改 YourAppName.exe.config 中的值,则在启动应用程序时将可见该值,而无需重建。