代码之家  ›  专栏  ›  技术社区  ›  LukeHennerley

如何在TFS自定义生成活动中获取生成项目

  •  3
  • LukeHennerley  · 技术社区  · 13 年前

    我正在创建一个自定义生成定义,我想在签入时使用它来增加程序集编号 this blog 哪些州要通过 Workspace 当更改 ReadOnly 文件夹。我有一个这样的源代码管理结构:

    • 团队协作
      • 解决方案A
        • 项目A
        • 项目B
      • 解决方案B
        • 项目A
        • 项目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 进入我的文件夹。

    关于我想要什么类型和属性来实现这一点,有什么想法吗?

    1 回复  |  直到 13 年前
        1
  •  4
  •   gregpakes    13 年前

    我认为您可以通过缩小工作文件夹在 build configuration 。请尝试按以下方式设置:

    • 编辑生成配置
    • 点击源设置(VS 2012)、工作区(VS 2010)
    • 使您的映射如下所示:

    地位 源代码管理文件夹 生成代理文件夹
    忙碌的 $/团队协作/解决方案B $(SourceDir)\

    这将使此生成的工作区仅限于您希望生成的解决方案。因此,只有下的AssemblyInfo文件对您的生成活动可见。

    希望这能有所帮助。