如何在TFS自定义构建活动中获得构建项目

本文关键字:构建 活动中 项目 自定义 TFS | 更新日期: 2023-09-27 18:02:58

我正在创建一个自定义构建定义,我想使用它来增加检入时的汇编号。我遵循这个博客,它说在改变ReadOnly文件时要传递Workspace。我有一个像这样的源代码控制结构:

  • 团队协作
    • 解决方案
        项目
      • 项目B
    • 解决方案B
        项目
      • 项目B

我已经在解决方案B中设置了项目B的自定义构建。为了测试的目的,我已经实现了一个日志记录器来记录正在发生的动作,使用以下代码:

protected void TrackMessage(CodeActivityContext context, string message)
{
  context.Track(new BuildInformationRecord<BuildMessage>()
  {
    Value = new BuildMessage()
    {
      Message = message,
      Importance = BuildMessageImportance.High
    }
  });
}

基本上,当我override execute时,我得到:

Workspace workspace = context.GetValue<Workspace>(CurrentWorkspace);
foreach (WorkingFolder folder in workspace.Folders)
{
  TrackMessage(context, string.Format("Working Folder: {0}", folder.LocalItem));
  //Then get all directories for this working folder
}

我的工作文件夹出现为Team collaboration,然后得到整个协作项目中的所有AssemblyInfo.*文件!我对我必须传递的属性和它的类型感到茫然,我试着研究它,以找到使用哪个属性来获得TeamCollaboration'Solution B'Project B进入我的文件夹。

关于我正在寻找什么类型和属性来实现这一点的任何想法?

如何在TFS自定义构建活动中获得构建项目

我认为您可以通过缩小build configuration内的工作文件夹映射来纠正此问题。尝试如下设置:

  • 编辑构建配置
  • 点击源设置(VS 2012),工作空间(VS 2010)
  • 让你的映射看起来像这样:

源代码控制Folder ,,,,,,,,,,,,,,,, 构建代理Folder ,,,,,,,,,,,,,,,
积极/团队协作/解决方案B 美元, (SourceDir)美元',,,,,,,,,,,,,,,,,,,,,,,,

这将使此构建的工作空间限制为您希望构建的解决方案。因此,只有其中的AssemblyInfo文件对构建活动是可见的。