Выполните целевой запуск один раз на уровне решения в MSBuild - PullRequest
11 голосов
/ 16 марта 2010

Мне нужен набор задач, которые нужно выполнить ровно один раз для всего решения. Это запустит задачи, которые изменят каждый проект для запуска отдельного набора задач для каждого проекта. Мы сделали это ранее, используя отдельный проект для решения, в котором были задачи уровня решения, но мы хотим отойти от этого. Кто-нибудь сделал это, или у кого-нибудь есть предложения, как это реализовать?

1 Ответ

7 голосов
/ 16 марта 2010

Поскольку файлы решений не в формате MSBuild, их нелегко расширить или настроить. Если вам нужен больший контроль над процессом сборки, вам придется создать файл msbuild «драйвер», который заменит файл вашего решения. Внутри этого файла драйвера вы создадите все нужные вам проекты и выполните некоторые дополнительные задачи. Это можно сделать с помощью задачи MSBuild . Вот пример, показывающий, как построить более 1 проекта.

<Project ...>
    <ItemGroup>
        <Projects Include="proj01.csproj"/>
        <Projects Include="proj02.csproj"/>
        <Projects Include="proj03.csproj"/>
    </ItemGroup>

    <Target Name="BuildAll">
        <MSBuild Projects="@(Projects)" BuildInParallel="true" />
    </Target>

</Project>

Так что в вашем случае вы просто выполняете задачи перед тем, как создавать проекты. Также обратите внимание, что я указал значение true для BuildInParallel, указывающее, что MSBuild может попытаться создать более одного проекта одновременно.

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