Скопируйте несвязанные проекты из решения в старт-проект решения - PullRequest
2 голосов
/ 28 июля 2011

Есть ли способ скопировать вывод проектов в папку bin текущего запуска-проекта из решения?Можно ли даже узнать, какой проект запускается из сценария MSBuild?Проекты, о которых я говорю, являются модулями PRISM, и из-за их модульности они не упоминаются в проекте оболочки.Тем не менее, мы все еще добавляем их в наше решение.

До сих пор у нас было довольно удобное решение для отладки нашего приложения.Наш проект инфраструктуры (который находится на самом низком уровне процесса сборки) удалит папку ... Shell \ bin \ Debug \ Modules.Загрузчик этого приложения настроен для загрузки модулей непосредственно из каталога «Модули».Для всех модулей-проектов в этой папке настроен выходной путь.

Преимущество этого процесса сборки состоит в том, что мы можем выбирать, какие модули мы хотим отлаживать, просто загружая / выгружая проект.Папка модулей всегда очищается при запуске и создаются только загруженные проекты.Это безконфигурационный способ отладки различных комбинаций модулей.

Как мы запустили новый проект PRISM, в котором используются модули, которые мы уже создали для другой оболочки.Теперь я сталкиваюсь с проблемой, что эта удобная установка больше не может работать.Проект с одним модулем имеет фиксированный OutputPath, и разработчики не смогут без проблем повторно использовать проекты в разных решениях.

Кстати, это не должен быть скрипт MSBuild, но он должен быть автоматизирован.

Редактировать: я забыл подчеркнуть, что одна и та же идея должна работать с несколькими оболочками Prism, использующими общие модули, и что я могу одновременно работать с несколькими продуктами PRISM.Поэтому я не могу использовать общий путь вывода для всех папок.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Вы можете указать цель AfterBuild в MSBuild для копирования результатов других проектов, например:

<Target Name="AfterBuild">
   <Copy SourceFiles="$(SolutionDir)MyProject1\bin\$(Configuration)\*.dll" DestinationFolder="$(TargetDir)"/>
   <!-- repeat for other projects -->
</Target>

AFAIK, обнаружение запуска проекта не тривиально, так как эта информация хранится в файле .suo. Вы можете изучить написание своей собственной задачи MSBuild или расширение задачи MSBuild Community: GetSolutionProjects

1 голос
/ 01 августа 2011

Вы можете настроить OutputPath вашего "нового" проекта так, чтобы он указывал на ту же папку ... Shell \ bin \ Debug, что и в вашем приложении "shell".Таким образом, новое приложение может снова загрузить свои модули из той же папки Modules.Никаких изменений в любой другой части системы не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...