我阅读了 John Robbins 的文章TFS 2010 Build Number and Assembly File Versions: Completely In Sync with Only MSBuild 4.0,我想知道如何进行集成。
文章的下载有两个文件,一个是targets文件,一个是proj文件。
目标文件有许多任务可以根据 Tfs 内部版本号(与用于构建的版本号相同)刮出内部版本号,并将该编号写入某个位置(称为 BuildNumberFile)以供其他项目文件使用。
proj 文件非常简单。它只是导入上述目标文件,然后声明一个名称为“All”的目标,同时还将 Project 元素上的 DefaultTargets 声明为 All。
<Project ToolsVersion="4.0" DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- The two required properties so the Wintellect.TFSBuildNumber tasks knows your major and minor values.-->
<TFSMajorBuildNumber>3</TFSMajorBuildNumber>
<TFSMinorBuildNumber>1</TFSMinorBuildNumber>
</PropertyGroup>
<Import Project="Wintellect.TFSBuildNumber.targets"/>
<!-- Just ask for the version information files you need. These are here to show all the diffent ones in
Wintellect.TFSBuildNumber.Targets. You can change the names -->
<Target Name="All"
DependsOnTargets="WriteSharedCSharpAssemblyVersionFile;
WriteSharedVBAssemblyVersionFile;
WriteSharedCPPCLIAssemblyVersionFile;
WriteSharedCPPAssemblyVersionFile;
WriteSharedWiXAssemblyVersionFile;
WriteSharedTextAssemblyVersionFile;"/>
</Project>
我对此有两个问题:
- 我还在学习 MSBuild。如果目标的名称没有在目标的其他地方指定,那么目标是否被执行?如何确保运行此目标?
- csproj 文件是否应该为 BuildNumberFile 所在的位置声明一个 Include 项,即使它在编译时才存在?
- ItemGroups 和 Include 是否有 DependsOnTargets 或允许他们在构建之前确保文件存在的东西?
- 是否应该将使用它的 csproj 文件的全部内容包装在一个目标中,该目标表示 BuildNumberFile 的 DependsOnTargets?
谢谢!