Я использую w7, 64bit и vs.net 2010.
Я добавляю ссылку на компонент, который находится в моем диалоговом окне «добавить ссылки». Компонент является сторонней dll.
Исторически сложилось так, что на 32-битной версии w7 он добавлял строку в мой 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, просмотрел тот же файл (ы) и щелкнул добавить ссылку.
** Это добавило ссылку на сборку в мою сеть. config (и он также не копировал dll в каталог bin моего веб-сайта) ****
Он получает копии в каталог bin, чтобы исполняемый файл мог их найти. В противном случае он не найдет его, если dll не установлена в GAC.
В ссылке есть свойство Копировать локальное (в окне «Свойства»), которое определяет, следует ли копировать сборку в выходной каталог.
Что касается того, почему это могло не иметь значения для других ссылок, MSDN сообщает:
Если вы развертываете / копируете приложение, которое содержит ссылку на настраиваемый компонент, зарегистрированный в GAC, этот компонент не будет развернут / копируется с приложением, независимо от настройки Копировать локально .
В дополнение к предыдущим ответам: я думаю, что Visual Studio определяет, установлено ли для свойства Copy Local
значение true, основываясь на том факте, что DLL отсутствует в GAC вашего компьютера.
Это не позволяет VS копировать собственные библиотеки DLL .net, поэтому по умолчанию он должен копировать только "пользовательские" библиотеки DLL.