2010-03-04 7 views

Antwort

17
  • ApiChange nimmt eine Reihe von "alten" Baugruppen und eine Reihe von "neuen" Baugruppen, die für potenziell brechen Api Änderungen diffed sind:

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

  • LibCheck können Sie zwei Versionen einer Assembly vergleichen und die Unterschiede festzustellen. Das Werkzeug meldet die Unterschiede als eine Kombination von "entfernt" und "added" APIs:

    LibCheck -store helloworld.dll 1,0 -Volle C: \ HelloWorldV1 \
    LibCheck -store helloworld.dll 2.0 -Volle C : \ HelloWorldV2 \
    LibCheck -compare 1,0 2,0

Siehe auch "Working with LibCheck", "Highlight Public API Differences Between Assembly Revisions" und "Api Diff Between Assemblies" Artikel.

8

ich nicht das Java-Tool versucht haben, die Sie im Zusammenhang, aber NDepend hat einige leistungsstarke Werkzeuge für den Vergleich von zwei Sätzen von Binärdateien und Hervorhebung von Differenzen.

0

Ich habe es nicht getestet, aber diese Bibliothek https://github.com/tunnelvisionlabs/dotnet-compatibility scheint zu liefern, was Sie wollen.

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(); 
    } 
}