我正在创建一个自定义构建定义,我想用它来增加我在 checkin 时的组装编号。我遵循了 this blog其中规定在更改 ReadOnly
文件时传入 Workspace
。我有这样的源代码控制结构:
- 团队协作
- 解决方案 A
- 项目A
- 项目 B
- 解决方案 B
- 项目A
- 项目 B
- 解决方案 A
我已经在解决方案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/