Ho inserito una pubblicazione sul sito dello User Group Xe.NET proprio sul nuovo progetto che ho inserito qui su peppedotnet.
Questo il link:
http://www.xedotnet.org/40/section.aspx/356

Il progetto l'ho chiamato ConfigSectionBuildProvider. Serve a creare tutte le classi utili per l'utilizzo di sezioni di configurazione personalizzate tramite la descrizione di queste ultime all'interno di uno o più file .configSection, inseriti all'interno della directory App_Code di un'applicazione web.
In pratica, con un file .configSection definito come segue:

<configSection name="MySection" type="Peppe.Config.MySection" namespace="Peppe.Config">

<MySection>
<Author Name="System.String" Surname="System.String" Age="System.Int32" />
<Articles>
<Article ID="System.Int32" Title="System.String" />
</Articles>
</MySection>
</configSection>

ho la possibilità di utilizzare la seguente sezione personalizzata all'interno del web.config:

<configSections>

<section name="MySection" type="Peppe.Config.MySection"/>
</configSections>
<MySection>
<Author Name="Giuseppe" Surname="Marchi" Age="23" />
<Articles>
<Article ID="1" Title="Configuration Section in ASP.NET 2.0" />
<Article ID="2" Title="Creazione di pagine asincrone" />
<Article ID="3" Title="Hello Workflow" />
</Articles>
</MySection>

e posso richiamare tali informazioni utilizzando le classi relative alla sezione di configurazione, che vengono create a run-time, all'interno delle pagine della mia applicazione:

MySection config = (MySection)ConfigurationManager.GetSection("MySection");

StringBuilder sb = new StringBuilder();
sb.AppendFormat("<h2>{0} {1}</h2>", config.Author.Name, config.Author.Surname);
sb.AppendFormat("Age: {0}<br />", config.Author.Age);
sb.Append("<hr /><h3>Articles</h3>");
foreach (Article art in config.Articles)
{
sb.AppendFormat("{0} - {1}<br />", art.ID, art.Title);
}
Response.Write(sb.ToString());

Tutto ciò senza dover scriver alcuna riga di codice !