我希望在TFS构建解决方案时,能够检测.NET代码(特别是C#)中的破坏性变更。如果在检入的代码与最近成功构建版本之间存在任何破坏性变更(例如 "A definite guide to API-breaking changes in .NET" 中所述),我想知道它们的情况。破坏性变更不一定会导致构建失败。除了编写一个使用反射来比较相同程序集的两个版本的应用程序,还有什么其他方法可以完成这项工作?
我希望在TFS构建解决方案时,能够检测.NET代码(特别是C#)中的破坏性变更。如果在检入的代码与最近成功构建版本之间存在任何破坏性变更(例如 "A definite guide to API-breaking changes in .NET" 中所述),我想知道它们的情况。破坏性变更不一定会导致构建失败。除了编写一个使用反射来比较相同程序集的两个版本的应用程序,还有什么其他方法可以完成这项工作?
返回
在Bear.dll中声明的类型,则会出现风险。如果这些程序集是强类型的,那么依赖于Apple的产品将期望该函数调用返回(完全限定类型名称)"Type,Bear,v1.1"。如果您已经“热修复”(更改但未重新版本化)了Apple.dll,则现在它将返回“Type,Bear,v1.2”,运行时将抛出类转换异常-因为强命名类型由所有名称组件(包括版本)限定。 - Adam单元测试。它们提供了一种断言“这就是客户端代码所期望的”的方式。你可以在构建时让TFS运行单元测试。(参考链接)
http://codebetter.com/patricksmacchia/2008/01/20/avoid-api-breaking-changes/
他提到了LibCheck和(显然)NDepend,并且有一个评论提到了另一个工具。由于已经过去3.5年以上了,现在可能有更好的选择(LibCheck已经超过6年了),但这些应该是一个开始。