Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / VB

Custom Application Configuration XML files Warning

4.73/5 (4 votes)
21 Jun 2010CPOL2 min read 11.6K  
Here is a lesson I learnt while working with custom application settings in XML files and Visual Studio
On a recent application I wrote, I ran into some problems when the application was released onto end users systems, but did not show up any problems in the development environment.

The application uses a Class that is serialized and deserialized to/from disk to stores the applications configuration settings. This way, if we want to change the database server/database userid/passwords, we can send an update config file to the user and they can drop this into the applications folder.

The application does not make use of the settings management built into the .NET Framework.

When the application was deployed to the end user environment at runtime, it generated an exception "Configuration system failed to initialize". I couldn't for the life of me work out what was happening, when the application was executed in the development environment, there were no errors, and everything worked as expected.

So, what was the problem.....simple, a filename conflict.

Originally I had used AppName.config as the settings file, changed this to AppName.xml and everything works now. As a test, I created an empty file named AppName.config, and dropped it in the EXE folder and yes, it triggered the exception.

It appears that if a file named AppName.config appears in the EXE folder, it attempts to start the configuration subsystem and throws the "Configuration system failed to initialize" error.
If you name a file AppName.exe.config and drop it in the EXE folder, it throws an exception with "The application has failed to start because its side-by-side configuration is incorrect".
This is despite not using any settings within the MyProject Application Settings tab.

Leasson Learnt: If you are making use of custom files to store config settings, don't call them AppName.config or AppName.exe.config.

Oh, and AppName should be replaced with whatever your EXE filename is...... :)

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)