65.9K
CodeProject 正在变化。 阅读更多。
Home

TFS 2010 变更集到已更改程序集映射器

2011年9月16日

CPOL

3分钟阅读

viewsIcon

18769

downloadIcon

291

TFS 2010:变更集到已更改程序集映射器

TFS_2010_Changesets_to_changed_assemblies_mapper.jpg

引言

这个工具是不同功能的组合,用于解决一个特定的实际问题 - 将给定的 TFS 变更集映射到受影响的程序集,以便创建服务包。

背景

我们的支持团队致力于为我们的产品创建服务包。每个服务包都涉及识别所有受代码库更改影响的 .NET 程序集,以便用于服务包。我们使用 TFS 2010 进行版本控制。支持团队希望有一个工具能够快速识别必须包含在 TFS 上某些变更集中的服务包的已更改程序集。此工具尝试自动化此发现过程。

使用工具

该工具需要用户提供三条信息

  1. TFSProjectCollection 的 URL - 格式如下:
    example: http://tfs09:8080/tfs/foo%20-%20900
  2. TFS 源代码管理器中的 TFS 文件夹位置。这应该是您的源代码根文件夹的位置。格式如下:
    example: $/Foo 900/Release/2011/2011Staging/Source

    最后...

  3. 工作区解决方案文件夹。这是您计算机上映射到上述 TFS 文件夹的物理文件夹。
    example: C:\Foo Dev\Foo 900\Release\2011\2011Staging\Source

在运行此工具之前,您必须在您的计算机上获取上述 TFS 文件夹的最新版本。在填写完所有三条信息后,点击 获取变更集 按钮。这将启动两个线程以从系统获取所需的信息。获取所有信息后,将启用 获取已更改的程序集 按钮,您应该在顶部列表视图控件中看到所选 TFS 分支的变更集。现在使用复选框选择变更集,然后点击 获取已更改的程序集 以在下面的列表框中获取已更改的程序集。然后,您可以通过上下文菜单将下窗口的内容导出到剪贴板。

映射过程的工作流程如下:

获取给定分支的变更集 >> 扫描给定解决方案路径中的解决方案文件 >> 解析解决方案文件以获取项目文件的名称和路径 >> 解析项目文件以获取源文件的名称 >> 创建一个字典,其中源文件名作为键,程序集名称作为值 >> 使用此字典映射变更集的更改对象的关联文件并获取关联的程序集。未在程序集中存在的源文件将单独报告。

Using the Code

代码很容易阅读。请随时提问。

我从 Tarun Arora 关于使用 TFS 2010 API 的优秀文章中汲取了灵感。我还从 John Leidegren 在 Stack Trace 上的贡献中获取了解决方案解析器代码。相关链接在源代码的注释部分中提供。

关注点

TFS 2010 API 提供了扩展现有功能以及自动化手动流程以简化生活的好机会。

在使用任务并行库时,我发现了一个有趣的事实

// Found that Parallel.Invoke() blocks the call till 
// all the called functions return. I didn't find it to be suitable for my need.
// Parallel.Invoke(() => GetChangesets(), () => GetFileAndAssemblyInformation());

// So I used Task class instead to achieve asynchrony.
new Task(() => GetFileAndAssemblyInformation()).Start();
new Task(() => GetChangesets(tbTFSProjectCollectionURL.Text.Trim(), 
			tbTFSFolder.Text.Trim())).Start();

历史

  • 2011/09/16:首次发布
  • 2011/09/20:修复了一些错误后更新了源代码

我期待您的评论。

© . All rights reserved.