【问题标题】:When is an app.config created, when an app.exe.config and what is the difference什么时候创建一个app.config,什么时候创建一个app.exe.config和有什么区别
【发布时间】:2011-01-11 12:15:51
【问题描述】:

我们已经创建了一个 WinForms 应用程序并通过 ConfigurationManager 类存储了一些配置。为了存储我使用的信息

Configuration pConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
pConfig.AppSettings.Settings.Add("updates", szUpdatesURL);
pConfig.Save(ConfigurationSaveMode.Modified);

这里的问题是,在某些情况下应用程序会创建一个“appname”.config 文件,而在其他情况下会创建一个“appname”.exe.config。

这里我必须注意,默认情况下不提供配置文件,因为它并不总是需要。

配置在程序第一次执行时保存。这给我们带来了一个问题,我无法指定创建其中一个或另一个的场合。

我在同一台电脑上使用完全相同的 .exe 进行了测试,我得到了两个结果。这里发生了什么?

两者有什么区别,如何指定应该创建哪一个? 非常感谢

【问题讨论】:

  • 有什么原因不能发送空配置文件吗?
  • @Paolo 不是真的,但问题是我们最初是这样部署的,并且需要配置文件,后来出现了。因此,这会给尝试升级的旧版本用户带来一些问题。

标签: .net winforms configuration app-config


【解决方案1】:

“appname.exe.config”会在您编译应用程序时自动为您创建。这是应该分发给最终用户的文件(当然还有 exe 文件)。您在 appname.config 中设置的设置将转移到 appname.exe.config。 They are essentially the same files。 appname.config 存在的原因是因为在运行可执行文件时,它的配置文件很简单,可执行文件的名称带有.config 后缀。但是,如果可执行文件的名称发生更改,则必须手动更改 exe.config 文件的名称。因此,通过在编译时自动重命名,app.config 可以将其名称更改为 newappname.exe.config 文件,CLR 仍会选择它。您可能会发现 appname.exe.config 文件是在 bin 目录中创建的。 我希望这很清楚:) 下面的链接可能会更深入地解释它。

here 有一个很好的解释。另一个很好的阅读是CodePlex

【讨论】:

  • 谢谢。但是我主要担心的是我默认情况下不会随 exe 一起提供配置文件。在某些情况下,程序会创建一个配置文件。在这些情况下,我遇到的问题是有时它会创建例如“Appname”.config,而有时它会创建“Appname”.exe.config。这让我感到困惑,因为我知道默认设置文件名应该是 *.exe.config
  • 从我执行的测试中,我没有得出一个结论,因为实际上“appname”.config 是实际生成的。但是很明显,为了避免这种混淆,我们应该默认发送一个“appname”.exe.config。
  • 有道理,今天我发现我的程序在 Visual Studio 中运行正常,但是当我将它复制到另一个目录时,它显示“内存不足”,只是因为我没有配置文件目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
相关资源
最近更新 更多