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