Когда Вы используете веб-сайт ASP.NET (вместо модели веб-приложения) и добавляете ссылку на блок от локальной папки, Visual Studio, кажется, понимает, что этот локальный блок находится также в GAC и так НЕ копирует этот блок в папку мусорного ведра (как это делает с non-GAC блоками), но просто добавляет новую запись в web.config файле.
Почему такое поведение? Действительно ли возможно вызвать копию к папке мусорного ведра (мне нужно это, так как .dll не находится на целевой среде)? Я могу добавить блок к папке мусорного ведра как файл, и это будет работать, но в этом мусорном ведре случая содержание папки будет в управлении исходным кодом, которое не хорошо.
Вы можете установить для свойства Copy Local значение True для ссылки. Это должно добавить его в папку bin - в проект веб-приложения.
Но для проекта веб-сайта, когда вы добавляете ссылку, все, что он делает, это добавляет строку в файл web.config, которая ссылается на сборку. Он будет искать этот файл сначала в папке bin, а затем в GAC, если он не найден.
У вас есть два варианта: потребовать, чтобы сборка была установлена в GAC на целевой машине (в этом случае развертывание XCOPY невозможно) или включить все необходимые сборки в папку bin, скопировав их или написав пост-сборочный сценарий, который делает это. Вы можете найти .dll, используя командную строку и перейдя в c: \ windows \ assembly \ GAC, найдите интересующую вас сборку, cd в этот каталог, а затем cd в каталог с интересующей вас версией. Это предоставит вам путь для использования в вашем сценарии после сборки. Например, для сборки специальных возможностей в GAC у вас будет следующий путь: c: \ Windows \ assembly \ GAC \ Accessibility \ 1.0.5000.0__b03f5f7f11d50a3a \ Accessibility.dll
Вы говорите, что включение содержимого папки bin в систему управления версиями нехорошо. Обычно это считается верным для создаваемых вами двоичных файлов, но в вашем случае у вас есть двоичные ресурсы, которые не скомпилированы как часть вашего проекта. С философской точки зрения они эквивалентны изображениям: двоичные ресурсы, не скомпилированные как часть вашего проекта. Я бы сказал, что они принадлежат системе контроля версий так же, как и любой другой двоичный файл, на который опирается ваш проект. Но это личный выбор.
Во время выполнения сборки должны находиться в одном из двух расположений: выходной путь проекта или глобальный кэш сборок (см. Работа со сборками и Глобальный кэш сборок). Если проект содержит ссылку на объект, который не находится в одном из этих расположений, то при построении проекта ссылка должна быть скопирована в выходной путь проекта. Свойство CopyLocal указывает, нужно ли делать эту копию. Если значение равно true, ссылка копируется. Если значение равно false, ссылка не копируется.
Присвоенное проекту значение CopyLocal определяется в следующем порядке:
Надеюсь, это поможет
s