我有一个C#项目(vs2013),对于这个项目,我想在构建之前总是做一个干净的解决方案。现在我可以(一次又一次)在构建之前选择干净的项目,但这应该可以使用.csproj文件中的Target标记。我开始在互联网上寻找并找到了一个无效的解决方案:
<Target Name="Clean"
BeforeTargets="Build">
<Message Text="### Start Clean before build"
Importance="high" />
<Exec Command="CALL "$(MSBuildBinPath)\msbuild.exe" "$(MSBuildProjectFullPath)" /t:Clean" />
<Message Text="### Finished Clean before build"
Importance="high" />
</Target>
但这导致无限循环,一遍又一遍地启动msbuild。
答案 0 :(得分:2)
您已经递归地定义了目标。不要将它命名为#34;清洁&#34;,将其命名为&#34; PreBuildClean&#34;或类似的东西。
此外,您不必使用Exec从外部调用msbuild。您可以使用CallTarget
任务直接调用目标。
<Target Name="PreBuildClean"
BeforeTargets="Build">
<Message Text="### Start Clean before build"
Importance="high" />
<CallTarget Targets="Clean" / >
<Message Text="### Finished Clean before build"
Importance="high" />
</Target>
Rebuild目标只是Clean,然后是Build,所以我不确定你为什么需要这个,除非它只针对解决方案中的一个特定项目。