Search code examples
.netbackwards-compatibility

I am looking for a tool like LibCheck to evaluate different versions of the same SDK


I am working on an SDK. As I release new versions I would like to produce a report of the differences in the API. This is not the differences in the code. Most of the code is not expected to be used directly. The public classes/methods is what I am interested in. Furthermore, we have adopted the convention that anything in a namespace that includes Implementation should not be used by a client of the SDK. So I am looking for the differences in the public interfaces, classes and methods that are not in a namespace that includes Implementation. I want to know what has been removed, added and modified between two releases.

I found a tool from Microsoft called LibCheck that is in the right ballpark. I have a couple of issues with LibCheck. LibCheck does not recognize a method that has been modified. It reports the method as having been removed and added. It sometime reports a method as having been removed and added, but the name and parameters are all the same. I do not know what it is attempting to tell me in these cases. Finally I do not care for the layout of the reports. I would like a break down by namespace as well as by assembly and class.

I am aware that the reports are the result of an XSLT transform and I could make them look essentially anyway I want. Still the other issues coupled with a general lack of support for the tool from Microsoft leave me looking for an alternative.


Solution

  • There's also http://apichange.codeplex.com that has a diffing option. Call it like this

    ApiChange -diff -old $net2dir\System.dll -new $net4dir\System.dll
    

    and you should get a report.