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

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

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

Я могу просмотреть файл в c: \ windows \ assembly \


person Community    schedule 14.01.2009    source источник


Ответы (10)


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

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

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

person xr280xr    schedule 16.09.2010
comment
Я недавно смотрел видео Channel 9 или что-то подобное и на короткое время увидел, что в окне добавления справки инструктора есть опция GAC (точно не помню). Я не знаю, была ли это самодельная надстройка или она доступна. Кто-нибудь это видел? - person xr280xr; 19.04.2011
comment
GAC_MSIL не распознается как внутренняя или внешняя команда в Win7 - person Rakesh; 09.12.2013
comment
@Rakesh, в Win7 работает. Введите полный путь, как показано в ответе, а не только gac_msil - person Francesc Castells; 22.04.2015
comment
Также может потребоваться поиск здесь: C: \ Windows \ Microsoft.NET \ assembly - person nuzzolilo; 24.10.2017
comment
Да, нет, это не работает, полный путь или иначе, в зависимости от того, какая у вас версия Windows, так что это бесполезное общее решение. - person Rick O'Shea; 13.04.2018
comment
Вы также можете отредактировать файл проекта и удалить HintPath. - person jpmc26; 18.07.2018

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

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

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

person Tim Jarvis    schedule 14.01.2009
comment
Ваша ссылка не работает. Это выглядит как Теперь это пакет NuGet. Но есть также загрузки MSI, например здесь. - person jpmc26; 18.07.2018
comment
Этот ответ был опубликован 9 лет назад! - отредактировано, чтобы удалить ссылку, но, честно говоря, этот вопрос и ответ в основном исторические. - person Tim Jarvis; 20.07.2018

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

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

person BALKANGraph    schedule 29.04.2010
comment
Есть ли способ заставить его работать с Visual Studio Express Edition? - person Eric Hartford; 28.03.2012
comment
@Fetchezlavache: Я неофициально изменил расширение для поддержки VS2012 и VS2013. Его можно загрузить здесь. - person Alex Essilfie; 25.06.2014

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

person Manesh    schedule 29.04.2011

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

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

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

person Matt Briggs    schedule 14.01.2009
comment
Его почему-то нет! - person ; 15.01.2009
comment
На странице, на которую вы ссылаетесь, они сейчас (с 17 ноября 2010 г.) упоминают, что проблема устранена. - person Matthijs Wessels; 11.01.2011

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

person Ahmed IG    schedule 18.01.2012

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

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

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

person Stefano Driussi    schedule 14.01.2009

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

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

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

person Vinod Srivastav    schedule 19.06.2015

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

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

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

person winwaed    schedule 13.01.2011

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

person Devlin    schedule 14.08.2015