The quick answer is if you do not support multiple simultaneous versions of Foo.Common.dll in your application, I just omitted the version number from the configuration section.
<configSections> <section name="BletchConfiguration" type="Foo.Common.Bletch, Foo.Common"/> .... </configSections>
This does not apply to the section area of ββthe file configuration section - it is an integral .net thing and convention used everywhere.
[EDIT]
I can not find any documentation regarding which parts are optional. The MSDN documentation simply states the structure http://msdn.microsoft.com/en-us/library/ms228245.aspx However, there are a few experiments from memory ... (this is quite flexible - square brackets mean optional)
If your DLL is in the GAC, you will need the version ... FullTypeAndNamespace, AssemblyNameWithoutExtension, Version, Culture, PublicKeyToken [,PlatformType]
If your DLL is in the bin directory FullTypeAndNamespace, AssemblyNameWithoutExtension [,Version, Culture, PublicKeyToken] [,PlatformType]
Therefore, the first two parts are required, because the application must know which assembly to look for, for the type you specify.
You may have optional components in any order (because they are structured as key = value pairs, order does not matter). Just specify the elements you want to limit, omit the rest.
So, in the example that I gave, the CLR will load the first DLL that matches the name and contains the required type.