c# - 如何在 TFS 自定义构建事件中获取构建项目

标签 c# build tfs

我正在创建一个自定义构建定义,我想用它来增加我在 checkin 时的组装编号。我遵循了 this blog其中规定在更改 ReadOnly 文件时传入 Workspace。我有这样的源代码控制结构:

  • 团队协作
    • 解决方案 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
    }
  });
}

基本上,当我覆盖执行时,我得到:

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 放入我的文件夹。

关于实现此目标我正在寻找什么类型和属性的任何想法?

最佳答案

我认为您可以通过缩小构建配置 中的工作文件夹映射来解决此问题。尝试如下设置:

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

状态源代码管理文件夹 构建代理文件夹
主动$/团队合作/解决方案B $(SourceDir)\

这将使此构建的工作区仅限于您希望构建的解决方案。因此只有该文件下的 AssemblyInfo 文件对您的构建事件可见。

希望这对您有所帮助。

关于c# - 如何在 TFS 自定义构建事件中获取构建项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15270160/

相关文章:

c# - 对profilecommon的任何引用都会导致错误值不能为null。参数名称: type

c# - 带有脚本的 HtmlHelper 扩展

c# - 如何修复 Mono 3.0.3、Entity Framework 6 Beta2 和 Npgsql 上 MVC3 项目的 DbProviderServices 继承错误?

ember.js - 是否可以在没有 HTTP 服务器的情况下运行 ember-cli 应用程序?

Android - docx4j 构建问题

visual-studio-2008 - 为什么要使用专用计算机使用TFS进行构建?

visual-studio - TFS 损坏的数据库项目 Odyssee

c# - Crystal 报表组备案号

build - TeamCity 如何触发具有不同逻辑分支名称的依赖构建

tfs - 为什么不使用 TFS 作为构建/CI 解决方案?