如何使用 TFS 服务器在 .proj (MSBuild) 中获取 BuildNumber [英] How to get BuildNumber in .proj (MSBuild) using TFS server

查看:16
本文介绍了如何使用 TFS 服务器在 .proj (MSBuild) 中获取 BuildNumber的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们将 TFS 2010 与 VS 2010 一起用于 PHP Web 项目.实际上我们没有任何 .proj 或 .sln 文件,所以我自己制作了构建,它看起来像这样:

We use TFS 2010 with VS 2010 for PHP web projects. Actually we do not have any .proj or .sln file, so i have made my own to make builds, it looks like this:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(MSBuildExtensionsPath)MSBuildCommunityTasksMSBuild.Community.Tasks.Targets"/>
    <ItemGroup>
        <ZipFiles Include="***.*"/>
    </ItemGroup>

    <Target Name="Zip" >
        <Zip Files="@(ZipFiles)" ZipFileName="$(OutDir)myzip.zip" />
    </Target>

    <Target Name="Build" DependsOnTargets="Zip">
        <Message Text="My Build Complete - $(BuildNumber) - $(TeamProject) - $(BuildProperties)" />
    </Target>
    <Target Name="AfterBuild">
        <MakeDir Directories="Testing" />
        <Message Text="My AfterBuild- $(BuildNumber) "></Message>
    </Target>
</Project>

我已在 VS 的构建定义中将构建号配置为 "$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)" ,并且正确创建了网络路径上的放置文件夹.

I have configured build numbers in build definition in VS as "$(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r)" , and drop folder on network path is created correctly.

问题是 $(BuildNumber) 或 $(TeamProject) 或 $(BuildProperties) 为空.此外,似乎从未执行过我的 Afterbuild".

The problem is that $(BuildNumber) or $(TeamProject) or $(BuildProperties) are empty. Also it seems that "My Afterbuild" is never executed.

为什么我的变量是空的以及如何从指定的构建定义中获取构建号?

Why are my variables empty and how to get build number from build definition as specified?

推荐答案

运行 AfterBuild 目标:

<DefaultTargets="AfterBuild" />

<Target Name="Build" DependsOnTargets="Zip">

<Target Name="AfterBuild" DependsOnTargets="Build">

我不清楚为什么 Zip 目标应该在 Build 目标之前执行?

For me is not clear why Zip target should be executed before the Build target?

您必须通过手动将 BuildNumber 添加到 MSBuild 命令行来更新模板文件 defaultTemplate.XAML,因此命令行如下所示:

You have to update template file defaultTemplate.XAML by adding manually BuildNumber to the MSBuild command line so command Line would be like:

<mtbwa:MSBuild CommandLineArguments="[String.Format(&quot;
        /p:SkipInvalidConfigurations=true 
        /p:BuildNumber={1} {0}&quot;, 
        MSBuildArguments, 
        BuildDetail.BuildNumber)]" />

请参阅有关此技巧的原始文章:TFS2010 – $(BuildNumber) 在哪里?

See the original article regarding this trick: TFS2010 – Where is $(BuildNumber)?

这篇关于如何使用 TFS 服务器在 .proj (MSBuild) 中获取 BuildNumber的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆