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

5

由于这个问题似乎让人困惑或者感到不足,因此我将用自己的一部分想法重新表述它。

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

1个回答

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目标,以确保您获得干净的构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接