使目标在MSBuild中的解决方案级别运行一次

Cha*_*dam 11 msbuild

我需要一组需要为整个解决方案执行一次的任务.这将运行将修改每个项目的任务,以便为每个项目运行一组单独的任务.我们之前已经使用一个单独的项目来完成这个解决方案,该解决方案具有解决方案级别的任务,但我们希望摆脱这一点.有没有人这样做过,或者有没有人对如何实现这个有任何建议?

Say*_*imi 7

由于解决方案文件不是MSBuild格式,因此无法轻松扩展或自定义.如果您想要更多地控制构建过程,则必须创建一个"驱动程序"msbuild文件,该文件将替换您的解决方案文件.在此驱动程序文件中,您将构建所需的所有项目并执行一些其他任务.您可以使用MSBuild任务执行此操作.以下是展示如何构建多个项目的示例.

<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>
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下,您只需在构建项目之前执行任务.另请注意,我指定值为true BuildInParallel表示MSBuild可以尝试一次构建多个项目.