c# .net api binary-compatibility

¿Herramienta para compatibilidad con versiones anteriores de la API de C#/. NET?



.net binary-compatibility (3)

Encontré esta herramienta, http://sab39.netreach.com/Software/Japitools/JDK-Results/46/ , que comprueba la compatibilidad con versiones anteriores de diferentes versiones de API para Java utilizando javadoc.

¿Hay una herramienta equivalente a esta para C # /. NET?

Aquí hay un ejemplo de una comparación entre las API JDK 1.5 y JDK 6 que utilizan esta herramienta: http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-jdk6


No he probado la herramienta Java a la que se vinculó, pero NDepend tiene algunas herramientas poderosas para comparar dos conjuntos de binarios y resaltar las diferencias.


No lo he probado, pero esta biblioteca https://github.com/tunnelvisionlabs/dotnet-compatibility parece proporcionar lo que desea.

https://raw.githubusercontent.com/tunnelvisionlabs/dotnet-compatibility/master/CompatibilityCheckExample/Program.cs

IPackageRepository sourceRepository = PackageRepositoryFactory.Default.CreateRepository("https://www.nuget.org/api/v2/"); PackageManager packageManager = new PackageManager(sourceRepository, temporaryDirectory); packageManager.PackageInstalled += HandlePackageInstalled; packageManager.InstallPackage("Microsoft.Bcl.Immutable", SemanticVersion.Parse("1.0.34")); packageManager.InstallPackage("System.Collections.Immutable", SemanticVersion.Parse("1.1.33-beta")); using (PEReader referenceAssembly = new PEReader(File.OpenRead(Path.Combine(temporaryDirectory, "Microsoft.Bcl.Immutable.1.0.34", "lib", "portable-net45+win8+wp8+wpa81", "System.Collections.Immutable.dll")))) { using (PEReader newAssembly = new PEReader(File.OpenRead(Path.Combine(temporaryDirectory, "System.Collections.Immutable.1.1.33-beta", "lib", "portable-net45+win8+wp8+wpa81", "System.Collections.Immutable.dll")))) { Analyzer analyzer = new Analyzer(referenceAssembly, newAssembly, null); analyzer.Run(); } }


  • ApiChange toma un conjunto de ensamblajes "antiguos" y un conjunto de ensamblajes "nuevos" que se difieren por posibles cambios en la API:

    ApiChange -diff -old HelloWorldV1.dll -new HelloWorldV2.dll

  • LibCheck permite comparar dos versiones de un ensamblaje y determinar las diferencias. La herramienta informa las diferencias como una combinación de API "eliminadas" y "agregadas":

    LibCheck -store HelloWorld.dll 1.0 -full C: / HelloWorldV1 /
    LibCheck -store HelloWorld.dll 2.0 -full C: / HelloWorldV2 /
    LibCheck -compare 1.0 2.0

Consulte también los artículos "Trabajar con LibCheck" , "Resaltar las diferencias de la API pública entre las revisiones de la Asamblea" y "Difieren entre las Asambleas" .