2013-03-07 33 views
3

我正在创建一个自定义生成定义,我想用它来在检入时增加我的程序集编号。我遵循this blog,其中规定在更改ReadOnly文件时通过Workspace 。我有一个源控制结构是这样的:如何获取TFS中的生成项目定制生成activitiy

  • 团队协作
    • 溶液A
      • 项目A
      • 项目B
    • 溶液B
      • 项目A
      • 项目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放入我的文件夹中。

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

回答

4

我认为你可以通过缩小你在build configuration内的工作文件夹映射来解决这个问题。尝试将它设置如下:

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

状态源控制文件夹                                   生成代理文件夹                               
活动$ /团队协作/ B液   $(SourceDir)\                                                

这将使此构建工作空间被限制在解决这个哟你想建立。因此,只有该文件下的AssemblyInfo文件对于您的构建活动才可见。

希望这会有所帮助。

+1

刚才发布了这个答案!当我设置构建时,我认为工作区会更新,但是没有。 +1 – LukeHennerley 2013-03-07 12:00:24