Tools for public API difference reporting on .Net assemblies
NDifference is a difference and reporting tool to allow developers to discover breaking changes in the public API of a .Net project between releases at the assembly level. It works with published assemblies via reflection and does not require the original source code.
It performs static analysis on .Net assemblies, providing built-in inspectors for the most common checks and supports loading of custom inspectors. Analysis is performed at the library, assembly and type level.
The following is a list of built-in product level inspections:
- Removed assemblies
- Changed assemblies
- Added assemblies
The following is a list of built-in assembly level inspections:
- Changed target architecture
- Changed assembly references
- Removed types
- Added types
- Obsolete types
- Changed types
The following is a list of built-in type level inspections:
- Constant values
- Enum values
- Abstraction
- Constructors
- Derivation
- Events
- Fields
- Finalizers
- Interface implementation
- Methods
- Properties
- Sealing
- Obsolete members
- Taxonomy
There is a built-in reporting capability for common file formats but custom reporting is supported too.
Both the inspection rules and the report output are customisable.
The original inspiration for this project came from Microsoft's unsupported libcheck tool.
Get the source (fork or just use the download button at the top right) and run the build.cmd batch file.
The project builds on AppVeyor: .
Have an idea about improving the project? Please get involved. NDifference is an open source project (of course) and we accept contributions! Contribute a patch or let us know how to improve.
- The Mono.Cecil Project for the reflection engine
- The fine folks at xunit for their unit testing framework.
- AppVeyor for the CI support.