tunnelvisionlabs / dotnet-compatibility Goto Github PK
View Code? Open in Web Editor NEWA binary compatibility checking library for multiple versions of .NET assemblies
License: Other
A binary compatibility checking library for multiple versions of .NET assemblies
License: Other
Currently any change in attributes for a publicly-accessible field are considered a breaking change. This is especially useful for catching changes to the static
and virtual
modifiers, but may be overly strict.
The value of a publicly accessible const
field cannot change.
Adding new abstract methods to a class is a breaking change. Note that if the constructor is not publicly accessible in the reference version of the library, this is not a breaking change since external code would not be able to extend the type.
If an interface type IFoo
is publicly visible, adding a new interface type IBar
to the base interface list of IFoo
is a breaking change.
The current code does not check the assembly name.
Versions of referenced assemblies should only change in a manner compatible with the breaking changes policy of the library being checked. The behavior with respect to assembly binding redirection should be configurable.
The current implementation does not check generic type constraints for methods.
The current implementation does not check generic parameter constraints for types.
The current implementation only looks at two different versions of the same assembly. It would be nice to look at multiple target builds of the same version of the assembly to ensure certain versions are drop-in (binary compatible) replacements. For example, see tunnelvisionlabs/antlr4cs#87.
Currently any change in attributes for a publicly-accessible field are considered a breaking change. This is especially useful for ensuring a static field doesn't become an instance field (and vice versa), but may be overly strict.
The current build does not report an issue if members are added to an interface.
Types may be removed if the assembly is updated to include a [TypeForwardedTo] attribute for the same type in a different assembly.
The current implementation throws an exception the first time an issue is detected, and only supports reporting a single issue. It would be helpful to report all issues instead.
Currently the implementation does not treat <preliminary/>
members in any special way. It would be helpful if the XML documentation file associated with the library could be used to identify items in the previous release which are marked preliminary, and ignore those items during the analysis.
The following transformation shouldn't be considered a breaking change, but the current implementation is "too strict" and treats all changes to the base type as a breaking change.
Before:
public class Foo
{
}
public class Bar
{
}
After:
public class Foo
{
}
public class Bar : Foo
{
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.