Вопрос

У меня есть проект, который хранится в хранилище 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.

Это было полезно?

Решение

Как насчет проверки каталога libs на уровне решения , а не проекта? Это то, что мы делаем, поскольку библиотечные сборки обычно используются несколькими проектами; прямое размещение внутри одного каталога проекта не обеспечило бы большой ресурс общего доступа.

SketchingMode solution
  SketchingMode proj
    bin
      Debug
      Release
  Libs
    SystemHooks
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top