There are some instances where you may need your dll to have its own .config file. Of course, the .NET framework only uses a config file for the executing assembly (exe's) and not satalite assmeblies (dll's). Here is a class that can be used to read an XML file that follows the .config file schema:
/// /// Accessor for a configuration file when System.Configuration methods are not supported /// /// /// /// [Use Example] /// string file = "C:\\config.xml"; /// /// Configuration config = new Configuration(file); /// string dbConn = config.AppConfig["dbConn"].ToString() /// /// SqlConnection conn = new SqlConnection(dbConn); /// ... /// /// [Xml Configuration File Format] /// /// /// /// /// /// /// /// /// public class Configuration { private SortedList _AppConfig; private string _FilePath; /// /// The full physical file path to the configuration file /// public string FilePath { get { return _FilePath; } set { _FilePath = value; } } /// /// The primary key/value collection of the parsed config file /// public SortedList AppConfig { get { return _AppConfig; } set { _AppConfig = value; } } /// /// Initialize the Configuration class /// public Configuration() { this.FilePath = "config.xml"; ParseConfigFile(); } /// /// Initialize the Configuration class /// /// The full physical path to the configuration file public Configuration(string filePath) { this.FilePath = filePath; ParseConfigFile(); } /// /// Parse the configuration file set in the FilePath property. /// /// This method is called by the initializer, but should be re-called if the FilePath property is reset. public void ParseConfigFile() { if (File.Exists(this.FilePath)) { XmlDocument xml = new XmlDocument(); xml.Load(this.FilePath); this.AppConfig = new SortedList(xml.GetElementsByTagName("add").Count); foreach (XmlNode xnode in xml.GetElementsByTagName("add")) { this.AppConfig.Add(xnode.Attributes["key"].Value, xnode.Attributes["value"].Value); } } else { throw new FileNotFoundException("The configuration file '" + this.FilePath + "' could not be found."); } } /// /// Save the configuration settings back to the file set in the FilePath property. /// public void SaveConfigFile() { if (File.Exists(this.FilePath)) { XmlDocument xml = new XmlDocument(); xml.Load(this.FilePath); foreach (XmlNode xnode in xml.GetElementsByTagName("add")) { xnode.Attributes["value"].Value = this.AppConfig[xnode.Attributes["key"].Value].ToString(); } xml.Save(this.FilePath); } } }