Почему вкладка .NET в диалоговом окне «Добавить ссылку» в Visual Studio не отображает содержимое GAC? - PullRequest
3 голосов
/ 16 мая 2009

Дубликат : Получение сборок для отображения на вкладке .NET в Добавить ссылку

Итак, я использую Visual C # 2008 Express Edition, и я просто немного отклонился от темы, поскольку обнаружил, что мое предположение о том, что на вкладке .NET в диалоговом окне «Добавить ссылку» отображается содержимое GAC был неверным.

Это была небольшая проблема для меня, поскольку сборка, на которую я хотел сослаться из моего проекта, была доступна только в GAC. (Это была Microsoft.XNA.Framework v2.0, полученная из дистрибутивной версии XNA 2.0, и, насколько я мог видеть, она была установлена ​​только в GAC).

Я решил эту проблему, установив ссылку на Microsoft.XNA.Framework вручную в файле .csproj, а затем вытащил копию dll из кэша. Затем я смог создать каталог для DLL, добавить его в список каталогов сборки Visual Studio в реестре, а затем вуаля! Я мог видеть это на вкладке .NET.

Все это кажется мне ошибкой, и я не думаю, что мое первоначальное предположение (что на вкладке .NET показано содержимое GAC) было настолько неразумным или будет таким необычным. Может ли тот, кто знает больше, чем я, сказать мне

  • почему не отображается содержимое GAC? В документации просто сказано, что это не так, но есть ли на то веские причины?
  • Есть ли на самом деле способ внести все содержимое GAC в список? Ящик для галочки где-то пропустил?

Любая информация высоко ценится.

Ответы [ 2 ]

2 голосов
/ 26 мая 2009

Вы предполагаете, что вкладка .NET означает GAC, но это не так. Это означает установленные сборки, которые могут быть или не быть в GAC. Некоторые установки находятся в разделе Program Files, и эти сборки затем отображаются на вкладке .NET.

Когда вы добавляете ссылку на проект (не обращайте внимания на проекты веб-сайтов, поскольку они являются аномалией дочерних ублюдков и нуждаются в DIAF), среда выполнения .NET обнаружит эту сборку с помощью каскадного поиска, который начинается в каталоге исполняемых файлов, проверяет переменная среды PATH и заканчивается в GAC. У меня нет ссылки, но есть по крайней мере одна хорошая статья на MSDN, которая конкретно объясняет это.

Выше может показаться, что вышеприведенное напрямую не коррелирует, но в том смысле, что когда вы разрабатываете, вы можете сделать ссылку на сборку где-нибудь на вашем компьютере для разработки, но затем, когда вы распространяете свое приложение на другой компьютер для производственное использование, эта сборка не обязательно должна быть в том же месте, что и на вашей машине для разработки. Когда вы разрабатываете, вы можете иметь сборку локальную или в Program Files, но затем на другом компьютере, если эта сборка находится в GAC, тогда ваша программа должна просто работать.

(Обычно при установке SDK установщик будет достаточно умен, чтобы создать записи реестра, необходимые для отображения DLL на вкладке .NET. Ваш пример платформы XNA может сводиться к установке пакета времени выполнения вместо SDK или что-то.)

Надеюсь, это поможет.

0 голосов
/ 29 апреля 2010

Загрузите и используйте расширения Muse VSReferences. Он сделает все это автоматически для вас

S

...