每当TFS构建解决方案时,我想检测.NET代码(特别是C#)的重大变化。如果在签入的代码和最近成功构建的版本之间有任何重大更改(如“A definite guide to API-breaking changes in .NET”中所述),我想了解它。突破性更改不需要导致构建失败。如果没有编写一个使用反射来比较同一个程序集的两个版本的应用程序,那怎么办呢?
答案 0 :(得分:6)
详细说明 James 和 Adam 的答案,我想提供一些有关使用NDepend及其检测重大变更的详细信息代码查询和规则功能。 免责声明:我是该工具的开发人员之一
NDepend已经发展并且它的查询语言也是如此。如果您下载NDepend试用版并分析您希望搜索重大更改的代码库的两个版本,请查看以下{{3>默认代码规则组 API重大更改 }}
执行其中一个代码规则就像例如(NUnit v2.5.8和v2.5.3之间的差异):
答案 1 :(得分:5)
是的,我会(并且确实)使用NDepend。 我致力于为开发人员提供可扩展API的产品。因此,我们需要确保在发行版之间,我们不会删除这些开发人员可能依赖的功能。 另一方面,我们需要灵活地扩展产品,而不会在回归过程中产生大量限制。
您需要考虑的一些事情。
答案 2 :(得分:4)
单元测试。它们提供了一种断言“这就是客户端代码所期望的”的方法。您可以在构建时have TFS run unit tests。
答案 3 :(得分:2)
NDepend成名的Patrick Smacchia在大约3。5年前发布了这篇文章。
http://codebetter.com/patricksmacchia/2008/01/20/avoid-api-breaking-changes/
他提到了LibCheck和(显然)NDepend,还有一个评论提到了一个。
由于已经过去3.5年以上,现在可能有更好的选择(LibCheck已经超过6年了),但这些应该是一个开始。