Как я могу ссылаться на DLL в GAC из Visual Studio?
Эта сборка находится в GAC: Microsoft.SqlServer.Management.RegisteredServers.dll
Как добавить ссылку на эту сборку в Visual Studio?
Я могу просмотреть файл в C:\ Windows\ Assembly\
10 ответов
Как говорили другие, большую часть времени вам не захочется этого делать, потому что он не копирует сборку в ваш проект и не будет развертываться вместе с вашим проектом. Однако, если вы похожи на меня и пытаетесь добавить ссылку, которую все целевые машины имеют в своем GAC, но это не сборка.NET Framework:
- Откройте диалоговое окно "Выполнить" (Windows Key + r)
- Введите C:\Windows\assembly\gac_msil. Это своего рода странный хак, который позволяет вам просматривать ваш GAC. Вы можете получить к нему только через диалог запуска. Надеюсь, что мое распространение этой информации не приведет к тому, что Microsoft исправит ее и заблокирует. (Слишком параноик?:P)
- Найдите свою сборку и скопируйте ее путь из адресной строки.
- Откройте диалоговое окно "Добавить ссылку" в Visual Studio и выберите вкладку "Обзор".
- Вставьте путь к вашей сборке 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
РЕДАКТИРОВАТЬ: Согласно этому сообщению это известная проблема.
И это может быть решением, которое вы ищете:)
Может быть, уже слишком поздно, чтобы ответить, но я нашел очень простой способ сделать это (без взлома).
- Поместите свою DLL в GAC (для 3.5 Drag Drop внутри "C:\Windows\ Assembly \")
- Проекты GoTo -> Свойства
- Нажмите Ссылочный путь (для 3.5 это "C:\Windows\ Assembly \")
- и построить
Надеюсь, поможет
Соответствующие файлы и ссылки можно найти здесь:
http://msdn.microsoft.com/en-us/library/cc283981.aspx
Обратите внимание на ссылки о реализации /etc.