2016-11-03 8 views
0

Я использую файл сборки для сборки и тестирования моего проекта. У меня есть Compile-Target, который имеет эту строку «Targets =« Rebuild ». Мне действительно нужна эта строка? Использование Visual Studio Я знаю, что я могу очистить решение и построить его снова, или я могу просто перестроить . решение В моем MSBuild-файл я удалить моя основная папка BuildArtifacts, прежде чем снова создать его я использовал этот Tutorial, и я не знаю, почему он использует Target = Перестроить Это мой файл сборки:.?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

Это зависит от ваших потребностей: вам нужно полное решение чтобы перестроить или нет? Возможно, на сервере сборки вы хотите выполнить полную очистку/перестройку после каждой фиксации, чтобы убедиться, что база кода работоспособна. Удаление только выходного каталога (я предполагаю, что это то, что делает Clean) не обязательно удаляет все объектные файлы, так как они обычно входят в промежуточный каталог, который может быть не таким же, как выходной каталог.

+0

О, ладно, спасибо! Поэтому, если я хочу очистить и перестроить его, я должен использовать «Targets =« Rebuild »«? – Perazim

+1

Да, он будет вызывать чистые и строгие цели для всех проектов в решении, см., Например, http://stackoverflow.com/questions/3095901/difference-between-build-solution-rebuild-solution-and-clean-solution-in-visua – stijn