2010-03-04 4 views
20

Я нашел этот инструмент, http://sab39.netreach.com/Software/Japitools/JDK-Results/46/, который проверяет обратную совместимость между различными версиями API для Java с помощью javadoc.Инструмент для обратной совместимости для API C# /. NET?

Есть ли инструмент, эквивалентный этому для C# /. NET?

Вот пример сравнения между JDK 1.5 и JDK 6 API, с помощью этого инструмента: http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-jdk6

ответ

17
  • ApiChange делает взять набор «старых» узлов и набор «новых» узлов, которые потенциально сравнить при отличиях Api:

    ApiChange -diff -Старый HelloWorldV1.dll -Новый HelloWorldV2.dll

  • LibCheck позволяет сравнить две версии сборки и определить различия. Средство сообщает различия в виде комбинации "удален" и "добавлены" API:

    LibCheck -store HelloWorld.dll 1,0 -full C: \ HelloWorldV1 \
    LibCheck -store HelloWorld.dll 2.0 -full С : \ HelloWorldV2 \
    LibCheck -compare 1,0 2,0

Смотрите также "Working with LibCheck", "Highlight Public API Differences Between Assembly Revisions" и "Api Diff Between Assemblies" статьи.

8

Я не пробовал инструмент Java вы связаны, но NDepend имеет некоторые мощные инструменты для сравнения двух наборов бинарных файлов и выделения любых различий.

0

Я не тестировал его, но эта библиотека https://github.com/tunnelvisionlabs/dotnet-compatibility , кажется, обеспечивает то, что вы хотите.

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