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





0/5 (0投票)
TFS 2010:变更集到已更改程序集映射器

引言
这个工具是不同功能的组合,用于解决一个特定的实际问题 - 将给定的 TFS 变更集映射到受影响的程序集,以便创建服务包。
背景
我们的支持团队致力于为我们的产品创建服务包。每个服务包都涉及识别所有受代码库更改影响的 .NET 程序集,以便用于服务包。我们使用 TFS 2010 进行版本控制。支持团队希望有一个工具能够快速识别必须包含在 TFS 上某些变更集中的服务包的已更改程序集。此工具尝试自动化此发现过程。
使用工具
该工具需要用户提供三条信息
TFSProjectCollection
的 URL - 格式如下:example: http://tfs09:8080/tfs/foo%20-%20900
- TFS 源代码管理器中的 TFS 文件夹位置。这应该是您的源代码根文件夹的位置。格式如下:
example: $/Foo 900/Release/2011/2011Staging/Source
最后...
- 工作区解决方案文件夹。这是您计算机上映射到上述 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:修复了一些错误后更新了源代码
我期待您的评论。