When is an app.config created, when an app.exe.con

2020-02-08 07:41发布

问题:

We have created a WinForms application and store some configurations via the ConfigurationManager class. In order to store the information I use

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

The problem here is that in some occasions the application creates an "appname".config file and in other occasions an "appname".exe.config.

Here I must note that a configuration file is not shipped by default since it is not always required.

The configurations are saved the first time the program is executed. This has caused us a problem, and I cannot specify the occasions when which one or the other is created.

I have performed the tests, on the same pc, with the exact same .exe and I get both results. What's going on here?

What is the difference between the two, and how can I specify which one should be created? Many thanks

回答1:

The "appname.exe.config" is automatically created for you when you compile your application. This is the file that should be distributed to your end users (along with the exe file, of course). The settings you set in appname.config is transferred over to appname.exe.config. They are essentially the same files. The reason appname.config exists is because when the executable is run, it's config file is simple the executable's name with a .config suffix. However, if the executable's name changed, you would have to change the name of the exe.config file manually. Therefore, by automatically renaming at compile time, the app.config can change it's name to newappname.exe.config file and the CLR will still pick it up. You'll probably find that the appname.exe.config file is created in the bin directory. I hope that's clear :) The links below may explain it in slightly more depth.

There's a good explanation here. Another good read is on CodePlex.