Я думаю, что понял. Для тех, кто сталкивается с той же проблемой, есть интересный урок о некоторых менее известных функциях Windows:
Ссылка Марвина, упомянутая выше ...
http://support.microsoft.com/kb/306149
... говорит:
Чтобы отобразить сборку в диалоговом окне Добавить ссылку, вы можете добавить раздел реестра, например, следующий, который указывает на местоположение сборки
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\MyAssemblies]@="C:\\MyAssemblies"
где MyAssemblies - это имя
папка, в которой находятся сборки.
Так я и сделал, заменив «myAssemblies» на «C: \ Windows \ Assembly».
Ничего не случилось.
Я изменил значение пустого стандартного ключа на «C: \ Windows \ Assembly».
Ничего.
Я пробовал несколько вариантов темы: двойной обратный слеш, заканчивающийся обратным слешем, возвращение сына обратного слеша. Никакой сигары.
Поэтому я попытался работать наоборот, пытаясь скопировать необходимую DLL из c: \ windows \ assembly в один из каталогов, которые отслеживаются в диалоге «добавить ссылку». На моей машине эти пути удобно перечислены в
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx]
Когда я пытался скопировать dll из c: \ windows \ assembly, в контекстном меню не было опции «копировать». Drag'n'drop тоже не работал. Для этой проблемы я нашел несколько альтернативных решений здесь:
http://geekswithblogs.net/pavelka/archive/2006/05/05/WindowsExplorerAndTheGlobalAssemblyCache.aspx
Я выбрал решение 2:
Добавить ключ реестра DisableCacheViewer
Другой способ отключить создание нового ключа dword в HKLM \ Software \ Microsoft \ Fusion \ с помощью nane DisableCacheViewer и установить для него значение [DWORD] 1. 1. 1041 *
После того, как я это сделал, я увидел структуру каталогов real ниже c: \ windows \ assembly; почти каждый DLL имеет свой собственный подкаталог. Как только DisableCacheViewer был установлен, я мог
- пройти реальное дерево каталогов, которое было скрыто в c: \ windows \ assembly
- скопируйте dll и вставьте их в один из каталогов, перечисленных в "AssemblyFoldersEx"
- выведите правильный путь к моим библиотекам и создайте новый ключ к этому пути чуть ниже "AssemblyFoldersEx".
Большое спасибо всем, кто ответил, и особая благодарность Ханнесу Павелке, чья запись в блоге помогла решить мою проблему.
P.S .: Я почти уверен, что мне никогда не приходилось делать это под Windows XP. IIRC, все сборки взаимодействия были доступны без такого рода ошибок реестра.