Скопируйте сторонние зависимости при сборке // События после сборки не работают // Есть альтернативы?

У меня есть решение .NET, основанное на стороннем API. API в основном представляет собой интерфейс, который зависит от других файлов (sqlite, dll, лицензии и т. д.). Сторонние классы используются во многих моих проектах и, по-видимому, должны находиться в том же месте, что и мой окончательный исполняемый файл.

Внешний каталог выглядит примерно так:

RootDirectory
     File1.dll
     File2.dll
     Subdirectory
          FileA
          Subsubdirectory
               FileB
               FileC
               etc.

При сборке приложение должно выглядеть так, иначе API не работает:

MyApp.exe
ThirdPartyAPI.dll
File1.dll
File2.dll
Subdirectory
     FileA
     Subsubdirectory
          FileB
          FileC
          etc.

Я хотел бы сохранить нетронутой структуру зависимых файлов в расположении с именем [SolutionDir]\RootDirectory, и чтобы они просто копировались в мою сборку по мере необходимости. Проблема, с которой я столкнулся, заключается в том, что я не могу копировать файлы из RootDirectory при компиляции. Если я попытаюсь удалить свою корзину, он скажет, что File1 и File2 используются, поэтому я предполагаю, что это задержка.

Я попытался использовать это событие после сборки: xcopy "$(SolutionDir)RootDirectory\" "$(TargetDir)" /s /e /h Иногда это работает, в других случаях происходит сбой с кодом 2... и я не понял, почему пока что.

Любые мысли или другие идеи?


person Switch386    schedule 28.01.2017    source источник
comment
Вы читали stackoverflow.com/questions/7835304/?   -  person Eugene Podskal    schedule 28.01.2017
comment
Да, я читал и пробовал этот и пару других вариантов. Кажется, это не помогает. Я также упомяну, что не зациклен на использовании событий xcopy/build. Это просто то, что, казалось, имело смысл.   -  person Switch386    schedule 28.01.2017


Ответы (1)


В Visual Studio вы можете связать файл решения с проектом.
Просто добавьте сторонние файлы в качестве файлов решения, затем, удерживая клавишу ALT, перетащите их в проект, который создает окончательный исполняемый файл, и отбросьте их.
Если все сделано правильно, эти файлы будут отмечены маленьким синим значком.
И, наконец, измените их свойство "Копировать в выходной каталог" на "Копировать, если новее".

Когда вы создадите свой проект, эти файлы будут скопированы в выходной каталог.

person Seb    schedule 28.01.2017
comment
Я попробую, но если я правильно помню, вы можете делать только один файл за раз. Это сработает, если учесть, что компания выпускает обновления почти еженедельно, а включаемые файлы несовместимы. Все, что я знаю, это имя каталога, подкаталоги и файлы могут меняться с каждым выпуском. - person Switch386; 28.01.2017
comment
В этом случае xcopy все равно будет лучшим решением. Но могу я предложить вам взглянуть на эту тему? stackoverflow.com/questions/7835304/ - person Seb; 28.01.2017