Как я могу установить путь вывода проекта 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).

0 ответов

Другие вопросы по тегам