Как я могу установить путь вывода проекта vC++, отличный от его зависимостей (nuget)?
посылка
У меня есть решение Visual Studio 2015, содержащее различные проекты VC++.
Некоторые из них (EXE и некоторые библиотеки DLL) имеют значение $OutDir по умолчанию "$(SolutionDir)$(Configuration)\" (т. Е. "C:\MySolution\Debug\").
Для некоторых других проектов (DLL) мне нужно изменить путь вывода на подкаталог "Out" по умолчанию "Out" (то есть "C:\MySolution\Debug\Pieces\").
Пример дерева каталогов:
C: \ MySolution \ Debug \ MyProgram.exe Dependency.dll.\Куски\ MyPiece1.dll MyPiece2.dll
Ограничения
DLL-файлы "Pieces" зависят от стороннего Dependency.dll (через пакет NuGet), который я не могу изменить.
Обычное решение
Обычный способ для этого - изменить настройку проекта $OutDir для "кусочных" проектов, но это также заставит их зависимости выводиться в один и тот же вложенный каталог.
Это нежелательно, а также создает проблемы при отладке и упаковке всего решения.
Что я пробовал до сих пор
Я попытался:
1. сохранить $OutDir одинаковым для всех проектов
2. измените "части" $TargetName на "Pieces\$(ProjectName)"
Кажется, это работает (оба MyPiece*.dlland Dependency.dll правильно размещены и отладка в порядке), но, к сожалению, Visual Studio выдает следующее предупреждение:
предупреждение MSB8012: TargetName(Pieces\MyPiece1.dll) не соответствует значению свойства OutputFile компоновщика (MyPiece1). Это может привести к неправильной сборке вашего проекта. Чтобы исправить это, убедитесь, что значения свойств $(OutDir), $(TargetName) и $(TargetExt) соответствуют значению, указанному в%(Link.OutputFile).
Это предупреждение несколько сбивает с толку, поскольку%Link.OutputFile в настройках проекта выглядит правильно:
$ (OutDir) $ (TargetName) $(TargetExt) => C: \ MySolution \ Debug \ Pieces \ MyPiece1.dll
Вопрос
Какой правильный подход для решения моей проблемы?
Как заставить Visual Studio выводить некоторые сгенерированные файлы по другому пути, но при этом все равно иметь зависимости Nuget в $OutDir по умолчанию?
Я уже искал в Интернете и Stackru, но не могу найти подходящий ответ.
Примечание: моя проблема не связана с обновлением решения до VS2010 (как в официальных примечаниях Microsoft об предупреждении MSB8012 после обновления решения и его запросе в Stackru).