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

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

有人能告诉我如何处理app.config吗?当我在应用程序中创建一些值时,它就创建了自己。属性。我将代码文件设置为"CopyAlways"。但是,当我在调试或发布模式下编译应用程序,手动编辑配置(使用记事本)并启动应用程序时,它的行为就像配置文件中没有任何更改一样。我尝试更改app.config、appname.exe.config,甚至appname.vschost.exe.config。

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

我只发现了有关在运行时通过代码更改app.config的问题。但这不是我想要的。我有数据配置,变化不大。以及用户设置的设置(数据网格中记录的颜色等)。

我觉得,每次应用程序启动时都会读取该配置。我真的必须创建自己的配置文件吗?该文件将与exe位于同一文件夹中,每次应用程序启动时都会读取该文件?

我在msdn上找到的唯一支持是如何创建app.config。

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

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

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

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

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

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

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

您不需要复制app.config或将其设置为"CopyAlways"。

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

因此,如果你的应用程序是:MyApplication.exe,你应该在bin中找到文件MyApplication.exe.config

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

应用程序设置概述

应用程序设置架构

它们用于存储用户偏好,如背景颜色、可视化偏好等

相反,如果您想要一个易于更改的配置值,您应该使用app.config 中的appSettings节点

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

并从您的代码中访问:

ConfigurationManager.AppSettings["ServerIp"]

ConfigurationManager.AppSettings