Эта характеристика имеется у каждой сборки, несмотря на то, что частной сборке она и ни к чему.
Версию можно “подсмотреть” подсмотрели в манифесте сборки с помощью IlDasm.exe. Можно было бы для пущей крутизны кода поле Version проинициализировать непосредственно (дело хозяйское):
И тут открываются несколько приколов:
§ В манифесте версия задаётся последовательностью цифр, разделённых между собой двоеточием. Однако при формировании поля Version эти цифры следует разделять точкой.
§ Если сборка уникальна и среда разработки приложения ничего не знает о других версиях данной сборки - в поле Version можно спокойно забивать любые четвёрки чисел. Лишь бы требования формата были соблюдены.
§ Две одноименных частные сборки с разными версиями в раздел References третьей сборки загрузить не получается. Одноимённые файлы с одинаковым расширением в один каталог не помещаются. Не взирая на версии.
Следующий шаг: загружаем сборку в память
Используется блок try, поскольку загружаемую сборку можно и не найти.
При загрузке сборки известно её расположение (application directory), однако с расширением имени могут возникнуть проблемы. Действует такой алгоритм “поиска” (и называть-то это поиском как-то не удобно):
Среда выполнения .NET пытается обнаружить файл с расширением .dll.
В случае неудачи среда выполнения .NET пытается обнаружить файл с расширением .exe.
В случае неудачи – предпринимаются ДРУГИЕ алгоритмы поиска.
Файл конфигурации приложения
Так что за ДРУГИЕ-такие алгоритмы?
А всё зависит от файла конфигурации приложения. В этом файле можно явным образом сформулировать особенности приложения. В частности, явным образом указать место расположения загружаемой сборки.
Файл конфигурации – это текстовый файл со странным именем <ИмяФайла.Расширение>.config, в котором размещаются в строго определённом порядке теги, прописанные на языке XML.
Среда выполнения .NET умеет читать XML.
Утверждается, что если расположить частные сборки в других подкаталогах приложения, нежели bin\Debug, то с помощью файла конфигурации эти сборки исполняющая среда БЕЗ ТРУДА обнаружит. Однако не находит. Может быть, чего криво делаю?