Как я могу ссылаться на DLL в GAC из Visual Studio?

Эта сборка находится в GAC: Microsoft.SqlServer.Management.RegisteredServers.dll

Как добавить ссылку на эту сборку в Visual Studio?

Я могу просмотреть файл в C:\ Windows\ Assembly\

10 ответов

Как говорили другие, большую часть времени вам не захочется этого делать, потому что он не копирует сборку в ваш проект и не будет развертываться вместе с вашим проектом. Однако, если вы похожи на меня и пытаетесь добавить ссылку, которую все целевые машины имеют в своем GAC, но это не сборка.NET Framework:

  1. Откройте диалоговое окно "Выполнить" (Windows Key + r)
  2. Введите C:\Windows\assembly\gac_msil. Это своего рода странный хак, который позволяет вам просматривать ваш GAC. Вы можете получить к нему только через диалог запуска. Надеюсь, что мое распространение этой информации не приведет к тому, что Microsoft исправит ее и заблокирует. (Слишком параноик?:P)
  3. Найдите свою сборку и скопируйте ее путь из адресной строки.
  4. Откройте диалоговое окно "Добавить ссылку" в Visual Studio и выберите вкладку "Обзор".
  5. Вставьте путь к вашей сборке GAC.

Я не знаю, есть ли более легкий путь, но я не нашел его. Я также часто использую шаги 1-3 для размещения файлов.pdb вместе с их сборками GAC, чтобы убедиться, что они не потеряны, когда мне позже понадобится удаленный отладчик.

Регистрация сборок в GAC не помещает ссылку на сборку в диалог добавления ссылок. Вам все равно нужно ссылаться на сборку по пути для вашего проекта, главное отличие в том, что вам не нужно использовать опцию копирования локально, ваше приложение найдет ее во время выполнения.

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

Обратите внимание: если вы отправляете свое приложение кому-то, у кого не установлена ​​эта сборка, вам нужно будет его отправить, и в этом случае вам действительно нужно использовать распространяемый SharedManagementObjects.msi.

Я создал совершенно бесплатный инструмент, который поможет вам достичь вашей цели. Muse VSReferences позволят вам добавить ссылку на глобальный кэш сборок в проект из пункта меню Добавить ссылку GAC.

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

В VS2010 в окне "Добавить ссылки" вы можете нажать "Обзор" и перейти к C:\Windows\Assembly и добавить ссылки на нужные вам сборки. Обратите внимание, что файлы могут быть сгруппированы в разные папки, такие как GAC, GAC_32, GAC_64, GAC_MSIL и т. Д.

В VS щелкните правой кнопкой мыши свой проект, выберите "Добавить ссылку...", и вы увидите все пространства имен, которые существуют в вашем GAC. Выберите Microsoft.SqlServer.Management.RegisteredServers и нажмите кнопку ОК, и вы должны быть готовы

РЕДАКТИРОВАТЬ:

Именно так вы хотите делать это большую часть времени. Тем не менее, после небольшого возни я обнаружил эту проблему на MS Connect. MS говорит, что это известная проблема развертывания, и у них нет обходного пути. Парень говорит, что если он скопирует dll из папки GAC и уронит его в свою корзину, это сработает.

Единственный способ, который сработал для меня, это скопировать dll на рабочий стол или что-то еще, добавить ссылку на него, а затем удалить dll с рабочего стола. Visual Studio обновится и, наконец, будет ссылаться на DLL из GAC.

Предполагая, что вы уже попытались "Добавить ссылку...", как описано выше, и не смогли, вы можете посмотреть здесь. Они говорят, что вы должны выполнить некоторые предварительные условия: - .NET 3.5 SP1 - Windows Installer 4.5

РЕДАКТИРОВАТЬ: Согласно этому сообщению это известная проблема.

И это может быть решением, которое вы ищете:)

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

  1. Поместите свою DLL в GAC (для 3.5 Drag Drop внутри "C:\Windows\ Assembly \")
  2. Проекты GoTo -> Свойства
  3. Нажмите Ссылочный путь (для 3.5 это "C:\Windows\ Assembly \")
  4. и построить

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

Соответствующие файлы и ссылки можно найти здесь:

http://msdn.microsoft.com/en-us/library/cc283981.aspx

Обратите внимание на ссылки о реализации /etc.

Я нашел это расширение для VS 2013 Vitevic GAC Reference.

Другие вопросы по тегам