2016-11-03 91 views
0

我使用構建文件來構建和測試我的項目。 我有一個編譯目標它有這條線「目標=」重建「。我真的需要這條線嗎?使用Visual Studio我知道我可以清理一個解決方案並重新構建它,或者我可以重建。該解決方案 在我的MSBuild文件我刪除我的主文件夾BuildArtifacts再次創造他之前,我用這個Tutorial,我不知道他爲什麼使用目標=重建 這是我的構建文件:?MSBuild:我需要目標重建嗎?

<Project ToolsVersion="4.0" DefaultTargets="RunUnitTests" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <!-- Falls Eigenschaften nicht gesetzt -> Release & Any CPU als default--> 
    <PropertyGroup> 
    <!-- ... --> 
    </PropertyGroup> 

    <ItemGroup> 
    <!-- ... --> 
    </ItemGroup> 

    <!-- All the stuff go into my main folder --> 
    <Target Name="Init" DependsOnTargets="Clean"> 
    <MakeDir Directories="@(BuildArtifacts)" /> 
    </Target> 

    <!-- delete my main folder --> 
    <Target Name="Clean"> 
    <RemoveDir Directories="@(BuildArtifactsDir)" /> 
    </Target> 

    <!-- delete NUnit-Files --> 
    <Target Name="CleanAfter"> 
    <RemoveDir Directories="@(NunitDir)" /> 
    </Target> 

    <Target Name="Compile" DependsOnTargets="Init"> 
    <MSBuild Projects="@(SolutionFile)" 
    Targets="Rebuild" 
    Properties="OutDir=%(BuildArtifactsDir.FullPath); 
    Configuration=$(Configuration); 
    Platform=$(BuildPlatform)" /> 
    </Target> 

    <Target Name="RunUnitTests" DependsOnTargets="Compile"> 
     <Exec Command='"@(NUnitConsole)" "@(UnitTestsDLL)" --result=console-test.xml --work=BuildArtifacts' /> 
     <CallTarget Targets="CleanAfter" /> 
    </Target> 

</Project> 

回答

1

這取決於你自己的需求:你需要整個解決方案嗎?重建與否?可以說,在構建服務器上,您希望在每次提交之後執行完整的清理/重建,以確保代碼庫的健全。只刪除輸出目錄(我假設starget所做的是 Clean)並不一定會刪除所有的目標文件,因爲它們通常會進入中間目錄,該目錄可能與輸出目錄不一樣。

+0

哦,好的,謝謝!所以如果我想清理並重建它,我應該使用「Targets =」Rebuild「」? – Perazim

+1

是的,它會調用解決方案中所有項目的清理和構建目標,請參閱http://stackoverflow.com/questions/3095901/difference-between-build-solution-rebuild-solution-and-clean-solution-in-visua – stijn