Неправильно созданные выходные папки в Visual Studio 2008 - PullRequest
2 голосов
/ 14 ноября 2008

У меня есть решение со многими проектами. На самом деле есть основной проект и несколько плагинов. Я изменил OutputPath для всех плагинов, чтобы все двоичные файлы оказались в папке Core bin \ debug. (это необходимо, поскольку ядро ​​не имеет ссылки на плагины, следовательно, оно не «включает» двоичные файлы плагинов при компиляции.)

Итак, моя структура папок выглядит следующим образом:

Solution
  MySolution.sln
  Plugin1\
  Plugin2\
  Core\bin\debug

Каждый плагин OutputPath - ".. \ Core \ bin \ debug". Когда я открываю решение, Visual Studio создает папку «Core \ bin \ debug» в родительском каталоге Solution, как если бы относительный путь начинался с файла .sln. Однако, когда я создаю решение, двоичные файлы выводятся по правильному пути («Solution \ Core \ bin \ debug»).

Ядро \ Bin \ Debug

Для меня это похоже на ошибку Visual Studio, но, может быть, я где-то пропустил какую-то опцию. Есть идеи, как решить эту проблему?

PS: я знаю, что это не критичная проблема, поскольку все собирается и работает нормально, однако мне не нравится идея бессмысленной папки, висящей вокруг

Ответы [ 2 ]

3 голосов
/ 14 ноября 2008

Вместо того, чтобы изменить расположение вывода плагинов, вы можете создать для них сценарий пост-сборки (вкладка «Свойства \ События сборки»), который скопирует их в папку Core. Это предотвратит путаницу с выходными папками.

Эта командная строка должна помочь вам:

copy "$(TargetPath)" "$(SolutionDir)Core\$(OutDir)"

Если вам нужно также скопировать файлы .pdb и .config, вы можете добавить больше строк:

copy "$(TargetPath).pdb" "$(SolutionDir)Core\$(OutDir)"
copy "$(TargetPath).config" "$(SolutionDir)Core\$(OutDir)"

Если вы действительно хотите сделать это одной строкой, это также должно работать, хотя и не так чисто:

copy "$(TargetPath)*" "$(SolutionDir)Core\$(OutDir)"

Если вы не используете один и тот же путь вывода как в основном проекте, так и в надстройках, вам необходимо заменить $ (OutDir) на жестко заданное значение. Если они настроены для целевой папки «\ bin \ Debug» (или просто оставили значения по умолчанию), то вы можете избежать использования значения $ (OutDir).

1 голос
/ 20 ноября 2008

Вместо ".. \ Core \ bin \ debug" используйте "$ (SolutionDir) \ Core \ bin \ debug".

...