2012-09-19 46 views
22

我正在使用MSBuild從腳本編譯我的項目。我注意到它只是一個構建,而不是一個乾淨/重建。如何強制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> 

如何強制清潔/重建?

回答

29

變化

<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

+0

當你看到答案時看起來很明顯。 prob應該得到那一個。感謝您的回答 – John

+0

新的_csproj_怎麼樣? – Shimmy

15

「%WINDIR%\ Microsoft.NET \框架\ v4.0.30319 \ MSBuild的」 Project.sln /P:配置=推出/噸:重建

+0

在這個問題中,msbuild被用在一個項目文件中。不直接在命令提示符下。 – warunapww

+0

問題「我正在腳本中使用msbuild編譯我的項目」,更好地使用命令提示符 – Geograph

+0

無論它是否回答原始問題,該代碼段都幫助我得到了我需要去的地方..謝謝! – madannes

1

始終嘗試使用

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

因爲根據this MSDN article,當您的解決方案中有多個項目使用「重建」作爲目標時,可能會導致清理和構建以並行方式發生。這可能會導致項目依賴性問題。

但是當您使用「Clean and Build」作爲目標時,只有在清理完所有項目後纔會開始構建。