У меня есть проект, который хранится в хранилище Subversion.
В этом хранилище, в другой папке, у меня есть набор библиотек, которые я использую во многих своих проектах. Эти библиотеки хранятся в виде двоичных файлов, т.е. DLL, PDF и XML.
Вот пример макета:
<repo-url>
\Libraries
\SQLite
\SystemHooks
\Moq
В проекте приложения я добавляю каталог "libs", затем добавляю ссылку на свойство svn: externals в этот каталог, чтобы получить нужные мне библиотеки.
Например, для этого проекта, над которым я сейчас работаю, и который вызвал этот вопрос, мне нужна библиотека SystemHooks, поэтому в структуре папок проекта моего приложения она теперь выглядит следующим образом:
SketchingMode <-- solution folder, other projects here as well
SketchingMode <-- app project folder
libs
SystemHooks
Приятно то, что я могу легче обновлять библиотеки и просто использовать спецификатор -rXYZ для определения externals, чтобы избежать добавления более новых версий, чем я готов принять, и при этом иметь только одну копию каждый файл / версия в моем хранилище.
Плохая вещь, в данном конкретном случае, заключается в том, что один из DLL в каталоге SystemHooks (2, если я тоже хочу pdb) должен быть скопирован в выходной каталог, на который не ссылается проект.
Ссылки работают как обычно, но как только я помечаю один из файлов в этом каталоге как «Содержимое» и «Копировать всегда» или «Копировать, если новее», структура каталогов libs и SystemHooks также копируется в выходной каталог.
Таким образом, после сборки моя структура каталогов на диске выглядит следующим образом:
SketchingMode <-- solution folder, other projects here as well
SketchingMode <-- app project folder
libs
SystemHooks
bin
Debug <-- main build output here
libs
SystemHooks <-- 1-2 files in here
Единственный способ избежать этого - использовать шаги после сборки и просто добавить необходимые операторы копирования? Или я могу как-то настроить файл проекта, чтобы избежать копирования всей структуры, как это?
Просто чтобы прояснить, в каталоге bin \ Debug я не хочу, чтобы там был еще один слой libs \ SystemHooks, и все файлы, которые в настоящее время копируются в папку bin \ Debug \ libs \ SystemHooks, должны быть скопировано в папку bin \ Debug.