Visual Studio 2010 "Добавить ссылку" копирует DLL в каталог bin? - PullRequest
7 голосов
/ 23 августа 2010

Я использую w7, 64bit и vs.net 2010.

Я добавляю ссылку на компонент, который находится в моем диалоговом окне «Добавить ссылки». Компонент является сторонним dll.

Исторически сложилось так, что на w7 32-битной версии в моем файле web.config (внутри тега сборок) добавлялась ссылка на эту библиотеку DLL, и она не копировала библиотеку DLL в каталог bin.

Однако на 64-битном w7 dll копируется в каталог bin, а web.config вообще не обновляется.

Почему dll копируется в каталог bin? спасибо

Решение: (Обновлено) Эти сообщения дали мне подсказки, в которых я нуждался.

VS.NET скопирует dll в каталог bin, если ваша система не может найти dll в GAC. Сборки в GAC (зарегистрированные на вашей рабочей станции) и их можно найти, просмотрев каталог C: \ Windows \ Assembly.

Компоненты, перечисленные в vs.net «диалог добавления ссылок», могут быть или не быть в gac. Поскольку компонент указан в диалоговом окне «Добавить ссылки», это не значит, что он зарегистрирован на локальной рабочей станции. Я переместился в каталог компонентов и перетащил нужные DLL в каталог C: \ Windows \ Assembly. Я закрыл и снова открыл vs.net, перешел к тем же файлам и нажал «Добавить ссылку».

** Это добавило ссылку на сборку в мой web.config (и это также не скопировало dll в каталог bin моего веб-сайта) ****

Ответы [ 3 ]

11 голосов
/ 23 августа 2010

В ссылке есть свойство Copy Local (в окне свойств), которое определяет, следует ли скопировать сборку в выходной каталог.

Что касается того, почему это не имело значения для других ссылок, MSDN говорит:

Если вы развертываете / копируете приложение, которое содержит ссылку на пользовательский компонент, зарегистрированный в GAC, компонент не будет развертываться / копироваться с приложением, независимо от параметра Копировать локальный .

6 голосов
/ 23 августа 2010

Он получает копии в каталог bin, чтобы исполняемый файл мог его найти. В противном случае он не найдет его, если в GAC не установлена ​​dll.

1 голос
/ 23 августа 2010

В дополнение к предыдущим ответам: я думаю, что Visual Studio определяет, установлено ли для свойства Copy Local значение true, на основе того факта, что DLL отсутствует в вашем компьютере GAC.
Он запрещает VS копировать собственные библиотеки .net DLL, поэтому по умолчанию он должен копировать только «пользовательские» библиотеки DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...