如何强制使用MSBuild进行清理或重建?

36

我正在使用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>

如何强制进行清理/重新构建?


这是什么文件? - Darren
3个回答

48
"

使用以下命令重新生成项目:
\"%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild\" Project.sln /p:Configuration=Release /t:Rebuild

"


在这个问题中,msbuild 是在项目文件中使用的,而不是直接在命令提示符中使用。 - warunapww
在问题“我正在使用脚本从msbuild编译我的项目”中,最好使用命令提示符来执行脚本。 - Geograph
2
无论它是否回答了原始问题,这个片段帮助我到达了我需要去的地方..谢谢! - madannes

37

改变

<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任务文档


看到答案时似乎很明显。应该能够得到那个答案。感谢您的回答。 - John
新的_csproj_怎么样? - Shimmy Weitzhandler

1
始终尝试使用


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

根据this MSDN article所述,如果您的解决方案中有多个项目使用"Rebuild"作为目标,则可能会导致清理和构建并行进行。这可能会导致项目依赖关系出现问题。但是,当您将"Clean and Build"用作目标时,只有在所有项目都被清理后才会开始构建。

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