MSBuild:我需要目标重建吗?
MSBuild: Do I need Target Rebuild?
我使用构建文件来构建和测试我的项目。
我有一个 Compile-Target,其中有这一行 "Targets = "Rebuild"。我真的需要这一行吗?使用 Visual Studio 我知道我可以清理一个解决方案并重新构建它,或者我可以只重建解决方案。
在我的 msbuild 文件中,我 删除 我的主文件夹 BuildArtifacts ,然后再次创建他。我用这个Tutorial不知道他为什么用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>
这取决于您自己的需求:您是否需要重建整个解决方案?可以说,在构建服务器上,您希望在每次提交后执行完整的 clean/rebuild 以确保代码库是健全的。仅删除输出目录(我假设这是 Clean 目标文件所做的)并不一定会删除所有目标文件,因为它们通常会进入可能不相同的中间目录作为输出目录。
我使用构建文件来构建和测试我的项目。 我有一个 Compile-Target,其中有这一行 "Targets = "Rebuild"。我真的需要这一行吗?使用 Visual Studio 我知道我可以清理一个解决方案并重新构建它,或者我可以只重建解决方案。 在我的 msbuild 文件中,我 删除 我的主文件夹 BuildArtifacts ,然后再次创建他。我用这个Tutorial不知道他为什么用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>
这取决于您自己的需求:您是否需要重建整个解决方案?可以说,在构建服务器上,您希望在每次提交后执行完整的 clean/rebuild 以确保代码库是健全的。仅删除输出目录(我假设这是 Clean 目标文件所做的)并不一定会删除所有目标文件,因为它们通常会进入可能不相同的中间目录作为输出目录。