Я углубился в это на выходных. Воспроизведено дословно из моего блога :
Почему NUnit отсутствует в GAC? (или почему [сборка X] не отображается в диалоговом окне «Добавление ссылки» в Visual Studio?)
Поскольку Visual Studio не ищет ссылки в GAC:
Это по замыслу.
Вы можете добавить свои файлы явно, что не работает, если другие люди в вашей команде установили файлы где-то еще, например, C: \ Program Files \ NUnit 2.4.6 против C: \ Program Files \ NUnit -2.4.6. Или (точнее, потому что это проблема, с которой я столкнулся сегодня утром) C: \ Program Files \ NUnit 2.4.6 против C: \ Program Files (x86) \ NUnit 2.4.6. Обратите внимание на (x86) - мой домашний компьютер (по состоянию на прошлые выходные) работает под управлением Vista Ultimate x64.
У вас есть несколько вариантов:
- Если у ваших сборок еще нет домов, вы можете поместить их в папку VS PublicAssemblies: http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245239.aspx
- Если у них уже есть дома, вы можете добавить их в раздел реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ AssemblyFolders: http://support.microsoft.com/?kbid=306149.
- Если вы разрабатываете сборки для использования другими разработчиками (например, вы являетесь Microsoft или поставщиком средства разработки), вы можете поместить их в подкаталог C: \ Program Files \ Reference Assemblies, а затем добавить его в раздел реестра AssemblyFolders.
Это означает, что файлы вашего проекта будут ссылаться на сборку по имени (то есть по имени, версии, токену открытого ключа, всему тому джазу), и не имеет значения, где он фактически установлен на вашем ПК.
Обратите внимание, что это не работает как есть на 64-битной, потому что Visual Studio является 32-битным приложением. Вам на самом деле нужно зарегистрировать свои материалы в HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ AssemblyFolders, и вам, вероятно, следует зарегистрироваться в обоих.
Существуют также соответствующие варианты этих ключей HKEY_CURRENT_USER, но (так как они перемещаются), они не очень полезны (так как пути обычно в любом случае относятся к машине).