如何强制MSBuild清理或重建?

时间:2012-09-19 11:57:51

标签: configuration msbuild cruisecontrol.net

我正在使用脚本中的MSBuild来编译我的项目。我注意到它只是构建而不是干净/重建。

我有以下内容:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
<Target Name="Build">
    <MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Build" Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />
 </Target>

如何强制清理/重建?

3 个答案:

答案 0 :(得分:32)

更改

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
  Targets="Build"
  Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
  Targets="Clean;Build"
  Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj" Targets="Rebuild"
  Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />

有关详细信息,请查看MSBuild Task documentation

答案 1 :(得分:21)

  

&#34;%WINDIR%\ Microsoft.NET \框架\ v4.0.30319 \的MSBuild&#34; Project.sln   / p:Configuration = Release / t:Rebuild

答案 2 :(得分:1)

始终尝试使用

<MSBuild Projects="$(MSBuildProjectDirectory)\myproj.csproj"
  Targets="Clean;Build"
  Properties="OutputPath=$(MSBuildProjectDirectory)\..\bin\" />

因为根据this MSDN article,当你的解决方案中有多个项目使用“Rebuild”作为目标时,可能会导致清理和构建以并行方式发生。这可能会导致项目依赖性出现问题。

但是当您使用“清理并构建”作为目标时,只有在清理完所有项目后才会启动构建。