我已经使用 SVN 一段时间了。最近在一个项目中我正在使用TFS。对于构建,我喜欢在项目输出上附加/更新构建版本号。我在主页上执行此操作,以便它在应用程序上清晰可见。由于应用程序可以在多台计算机上运行,因此可以方便地了解正在运行的版本。
我在 SVN 世界中实现了这一目标:
<!-- Import of the MSBuildCommunityTask targets -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
<!-- to AssemblyInfo to include svn revision number -->
<Target Name="BeforeBuild">
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(ProgramFiles)\CollabNet Subversion Client">
<Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>
<Time>
<Output TaskParameter="Year" PropertyName="Year" />
<Output TaskParameter="Month" PropertyName="Month" />
<Output TaskParameter="Day" PropertyName="Day" />
</Time>
<FileUpdate Files="MasterPage.master" Regex="svn revision: (\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="svn revision: $(Year).$(Month).$(Day).$(Revision)" />
</Target>
正如您在上面看到的,“BeforeBuild”任务使用 YYYY.MM.DD.SVNVERSION 标记更新 masterPage.master 文件。
我如何使用 TFS 作为源代码控制来实现这一点。如何获取 TFS 内部版本号?
假设您指的是 Team Build,则 $(BuildNumber) 属性包含当前的内部版本号。
See http://blogs.msdn.com/aaronhallberg/archive/2008/02/12/team-build-2008-property-reference.aspx http://blogs.msdn.com/aaronhallberg/archive/2008/02/12/team-build-2008-property-reference.aspx获取可用属性的完整参考。
如果您只是运行 MSBuild,我不相信它会生成/应用总体内部版本号(每个项目在其 AssemblyInfo.cs [默认情况下] 文件中都会有一个单独的、可能自动递增的版本号)。您可以在运行时使用 System.Reflection.Assembly 类动态获取特定程序集的版本号。
Update
从 TFS 2010 开始,“BuildNumber”变量不再由 TFS 自动传递到 MSBuild 进程。 TFS 2010 现在使用 Windows Workflow 作为其内部构建引擎,因此如果您需要内部版本号,则必须修改构建定义以包含它,如中所述这篇 MSDN 文章 https://learn.microsoft.com/en-us/archive/blogs/jpricket/tfs2010-where-is-buildnumber.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)