Note:  The following namespaces were used in the C# code below:

System.Collections
System.Collections.Specialized
System.Configuration
System.Data.SqlClient
System.IO
System.Web.Configuration

Retrieving configuration settings (non-web):

Configuration config = ConfigurationManager.OpenExeConfiguration
    (ConfigurationUserLevel.None);

or

Configuration config =
    ConfigurationManager.OpenMachineConfiguration();

or

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
string fileName = "Example.exe.config";
Debug.Assert (File.Exists(fileName), "This file or path does not
    exist");
map.ExeConfigFilename = fileName;
Configuration config =
    ConfigurationManager.OpenMappedExeConfiguration
    (map, ConfigurationUserLevel.None);

or

// (Using the first four lines from the previous example)
Configuration config =
    ConfigurationManager.OpenMappedMachineConfiguration
    (map);

or if this is a web application

Configuration webConfig =
    WebConfigurationManager.OpenWebConfiguration
    (Request.ApplicationPath);

Specifying a version of the .NET Framework to run an app:

<? xml version = "1.0" ?>
<configuration>
    <startup>
        <supported Runtime version="v1.1.4322" />
    </startup>
</configuration>

Telling the runtime to look for a certain assembly

(This technique can also be used for connecting a shared assembly to multiple applications.)

  1. Create environment variable called DEVPATH and set it to the assembly location
  2. Tell the runtime to look for the assembly in the location specified by DEVPATH (example below)

<configuration>
    <runtime>
        <developmentMode developerInstallation = "true" />
    </runtime>
</configuration>

Specifying the location of a certain version of an assembly

<configuration>
    <runtime>
        <assemblyBinding xmlns="schema">
            <dependentAssembly>
                <assemblyIdentity name="sampleProgram"
                    publicKeyToken="xxxxxxxxx"
                    culture="en-us" />
                <codeBase version="x.0.0.0" 
                    href="http://www.example.com/sampleProgram.dll"
                    />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

Configuring appSettings and connectionString settings

<configuration>
    <appSettings>
        <add key="KeyName" value="KeyValue" />
    </appSettings>
    <connectionStrings>
        <clear />
        <add name="SampleSqlServerConnection"
            providerName="System.Data.SqlClient"
            connectionString="Data Source=localhost;
            Initial Catalog=AdventureWorks;
            Integrated Security=true" />
    </connectionStrings>
</configuration>

Accessing the appSettings values (non-web):

// This example is obsolete and generally should not be used
string appSettingVariable = ConfigurationSettings.AppSettings
    ["KeyName"];

or

// Better way
NameValueCollection allAppSettings =
    ConfigurationManager.AppSettings;
Console.WriteLine(allAppSettings["KeyName"]);
Console.WriteLine(allAppSettings[0]); // same output
int counter = 0;
IEnumerator enumer = allAppSettings.Keys.GetEnumerator();
while (enumer.MoveNext())
{
    Console.WriteLine("Item: " + allAppSettings.Keys[counter]);
    Console.WriteLine("Value: " + allAppSettings[counter]);
    counter++;
}

Retrieving connection strings:

ConnectionStringSettingsCollection csSettings =   
    ConfigurationManager.ConnectionStrings;
if (csSettings != null)
{
    foreach (ConnectionStringSettings setting in csSettings)
    {
        Console.WriteLine("Name: " + setting.Name);
        Console.WriteLine("Provider: " + setting.ProviderName);
        Console.WriteLine("Cnxn string: " +
            setting.ConnectionString);
    }
}
SqlConnection cnxn = new SqlConnection(setting.ConnectionString);

or if this is a web application

// Replace the first line of code above with this:
ConnectionStringsSection csSection =
    WebConfigurationManager.GetWebApplicationSection
    ("connectionStrings") as ConnectionStringsSection;
ConnectionStringSettingsCollection csSettings =
    csSection.ConnectionStrings;

Retrieving one particular connection string (non-web):

ConnectionStringSettings settings1 =
    ConfigurationManager.ConnectionStrings["sName"]; // by name
ConnectionStringSettings settings2 =
    ConfigurationManager.ConnectionStrings[0]; // by index
if (settings1 != null)
{
    SqlConnection connection = new SqlConnection(
        settings1.ConnectionString);
}

Retrieving a setting (“MyFirstSetting”) from a settings file (“Settings1″):

Let’s say that you added a settings file (Settings1.settings) to your Visual Studio project and created a new setting “MyFirstSetting”, like so:

Here is how you can access the value of that setting programmatically:

Settings1 mySettings = new Settings1();
Console.WriteLine("My first setting: " + mySettings.MyFirstSetting);

Storing and retrieving custom settings (without using a Settings file):

class ExampleWrapperClass : ApplicationSettingsBase
{
    [UserScopedSetting()]
    public string ExampleUserSetting
    {
        get { return this["ExampleUserSetting"] as string); }
        set { this["ExampleUserSetting"] = value; }
    }
    [ApplicationScopedSetting()]
    public int ExampleAppSetting
    {
        get { return (Convert.ToInt32(this["ExampleAppSetting"])); }
        set { this["ExampleAppSetting"] = value; }
    }
}

Registering a component as a server

<system.runtime.remoting>
    <application name="ExampleApplication">
        <service>
            <wellknown type="FullyQualifiedName,AssemblyName"
                mode="Singleton" objectUri="ExampleClass.rem" />
        </service>
    </application>
</system.runtime.remoting>

Configuring a client application to consume a new assembly

(If you are hosting from a local machine on port 5000…)

<system.runtime.remoting>
    <application name="ExampleClientApplication">
        <service>
            <wellknown type="FullyQualifiedName,AssemblyName"
                url="http://localhost:5000/ExampleClass.rem" />
        </service>
    </application>
</system.runtime.remoting>

Follow

Get every new post delivered to your Inbox.