在构建解决方案后运行MsBuild任务(目标?)?

时间:2009-10-30 12:52:20

标签: visual-studio msbuild

由于this question似乎感到困惑/不知所措,所以我会用我自己的部分构思来改写它。

我可以以某种方式设置一个批处理文件或在构建整个解决方案后运行的东西,并且此批处理文件将调用 msbuild 来构建某个特定目标项目?为了使它能够工作,我必须以某种方式强制 msbuild 构建目标而不考虑它是否认为它是“最新的”,因为这是核心问题我正在反对。

1 个答案:

答案 0 :(得分:3)

由于您正在处理具体的构建,因此您可能希望用MSBuild文件替换批处理文件。例如:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <ItemGroup>
    <SolutionsToBuild Include="MySolution.sln"/>

    <Projects Include="Proj1.csproj"/>
    <Projects Include="Proj2.csproj"/>
    <Projects Include="Proj3.csproj"/>
  </ItemGroup>

  <Target Name="BuildAll">

    <!-- Just executes the DefaultTargets (Build) -->
    <MSBuild Projects="@(SolutionsToBuild)"/>

    <!-- Call Rebuild if you think its not building correctly -->
    <MSBuild Projects="@(Projects)"
             Targets="Rebuild"/>

  </Target>
</Project>

然后,您只需使用以下命令调用此文件上的msbuild.exe:

msbuild.exe Build.proj /t:BuildAll

由于您说在构建解决方案之后要构建特定项目,只需将它们放入Projects ItemGroup中,如图所示,并在构建解决方案后使用MSBuild任务构建它们。我已经指定了Rebuild目标,以确保您获得干净的构建。