У меня есть файл с Visual Studio с несколькими проектами (в основном C++),
Большинство из них настроены довольно стандартным образом, а каталог Output установлен в каталог «bin».
Некоторым из них нужна их основная цель вывода для вывода в подкаталог «bin» (то есть «bin \ others»), но со всеми их зависимостями между DLL (управляемыми как пакеты NuGet), все еще скопированными в каталог «bin» ,
(зависимостей библиотеки DLL должны быть в \ Bin, потому что «другие» проекты библиотеки DLL загружаются во время выполнения с помощью EXE в \ Bin, поэтому зависимости должны быть найдены в пути EXE)Каков правильный способ вывода скомпилированного целевого объекта в другую папку, чем библиотеки DLL-зависимостей?
Структура выходных путей выглядит следующим образом:
\bin (main EXE and ALL dependencies DLLs)
\bin\others (others projects, with their dependencies DLL in \bin)
То, что я пытался до сих пор:
изменение $ (OutDir) для «других» проектов, но это не работает, потому что вся зависимость NuGet также будет скопирована в тот же выход каталог.
Сохранить $ (OutDir) в \ bin, но изменить «другие» проекты TargetName на «other \ $ (ProjectName)», но это вызывает ошибки при перестройке с чистого (то есть в автоматическом сборке), поскольку MSBuild (на самом деле файл Microsoft.CppClean.targets , включенный по умолчанию в проекты VC++) пытается записать в «$ (IntDir) $ (TargetName) .Build.CppClean.log», которого не существует (поскольку «$ (IntDir) \ others \ "каталог еще не создан).
Я хотел бы избежать после построения действия, потому что CMD, как команды имеют проблемы с параллельной автоматической сборкой с помощью MSBuild и задача MSBuild внутри проектов должна поддерживаться вручную (VS IDE не suppert их, AFAIK).
Любая идея или предложение о том, как решить эту проблему?
Очень плохая практика. Не только из-за проблемы с сборкой, вы не объяснили, как вы собираетесь решить следующую проблему. ОС не имеет большого шанса найти зависимости в этой «другой» папке, она не будет выглядеть там. Хороший Q + A также должен указать эту деталь. –
@ HansPassant Не забудьте понять свою точку зрения, но в Windows, если вы запустите EXE (в папке «bin»), которая динамически загружает DLLS из папки «bin \ others», зависимости будут правильно найдены в «bin», это почему я нуждаюсь в них, чтобы остаться там, а не в «bin \ others». – roalz