Быстрый ответ - если вы не поддерживаете несколько версий Foo.Common.dll в своем приложении, я просто опущу номер версии в разделе конфигурации.
<configSections>
<section name="BletchConfiguration"
type="Foo.Common.Bletch, Foo.Common"/>
....
</configSections>
Это не относится к области 'section' структуры файла конфигурации - это неотъемлемая вещь .net - и соглашение используется повсеместно.
[EDIT]
Я не могу найти какую-либо документацию, конкретно касающуюся того, какие части являются необязательными. Документация MSDN просто заявляет структуру http://msdn.microsoft.com/en-us/library/ms228245.aspx
Однако по памяти и небольшим экспериментам ... (это довольно гибко - квадратные скобки означают необязательно)
Если ваша DLL находится в GAC - вам потребуется версия ...
FullTypeAndNamespace, AssemblyNameWithoutExtension, Version, Culture, PublicKeyToken [,PlatformType]
Если ваша DLL находится в каталоге bin
FullTypeAndNamespace, AssemblyNameWithoutExtension [,Version, Culture, PublicKeyToken] [,PlatformType]
Следовательно, первые две части являются обязательными, поскольку приложение должно знать, какую сборку искать, для указанного вами типа.
Дополнительные компоненты могут быть в любом порядке (поскольку они структурированы как пары ключ = значение, порядок не имеет значения). Просто укажите элементы, которые вы хотите ограничить, опустите остальные.
Итак, в приведенном мной примере CLR загрузит первую DLL, которая соответствует имени и содержит требуемый тип.