VS2008.NET: Получение зависимостей ссылочного проекта для копирования в папку bin основного проекта - PullRequest
6 голосов
/ 11 марта 2009

Предположим, у меня есть проект C # Winforms, MainGUI.

Ссылка на другой проект в том же решении, ControlsLib.

ControlsLib ссылается на сторонний набор элементов управления, такой как Infragistics или Telerik, и предоставляет набор пользовательских элементов управления, которые используются в MainGUI.

Копировать Local установлен в true для всех ссылок в ControlsLib, и все сторонние библиотеки DLL отображаются в ControlsLib \ bin \ release.

Однако я не могу заставить сторонние библиотеки DLL автоматически копировать в MainGUI \ bin \ release, папку, из которой создается установщик программного обеспечения (в данном случае с помощью NSIS)

Поэтому сторонние DLL-библиотеки управления не включаются в установку, что приводит к возникновению исключения FileNotFoundException во время выполнения, когда используются элементы управления из ControlsLib, зависящие от сторонних DLL-файлов.

Есть ли "правильный" способ сделать это, о котором я не знаю? Ранее я только что обработал это в скрипте nant build, скопировав файлы, но я начинаю новый проект и просто хотел проверить.

Спасибо

Ответы [ 4 ]

2 голосов
/ 12 марта 2009

Я только что решил эту проблему, добавив следующую командную строку события после сборки в файл .csproj для MainGUI (свойства проекта -> события сборки)

copy $(SolutionDir)ControlsLib\bin\$(ConfigurationName)\Infragistics2*.dll $(TargetDir)

Я не осознавал, что это так просто ...

0 голосов
/ 23 июня 2012

Если вы измените основные свойства проекта (исполняемые) на вкладке «Публикация», опция «Файлы приложения», то вы сможете указать VS включить все файлы, которые не копируются.

0 голосов
/ 11 марта 2009

У меня была похожая проблема при использовании Gentle.NET (O / R Mapper). Одна из DLL отказывается копировать. Я провел расследование в течение нескольких часов и не смог найти причину. Все остальные файлы копируются, но ТО один исключен по какой-то странной причине. Gentle использовал три библиотеки DLL, Gentle.Common.DLL, Gentle.Framework.DLL и Gentle.SQLProvider.DLL. Последний никогда не копируется.

В конце концов я просто сделал сценарий ...

0 голосов
/ 11 марта 2009

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

На моем сервере сборки я использую скрипт, который исследует ссылки и добавляет все потомки непосредственно перед его сборкой (редактируя файлы csproj как xml) ... код не велик, но он делает работа.

...