Подтвердить что ты не робот

Инструмент для обратной совместимости для API С#/. NET?

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

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

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

4b9b3361

Ответ 1

  • ApiChange принимает набор "старых" сборок и набор "новых" сборок, которые различаются для потенциально нарушение Api:

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

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

    LibCheck -store HelloWorld.dll 1.0 -full C:\HelloWorldV1\
    LibCheck-магазин HelloWorld.dll 2.0 -full C:\HelloWorldV2\
    LibCheck -compare 1.0 2.0

См. также "Работа с LibCheck" , "Выделите Public API Differences Между изменениями в сборке" и "Api Diff Between Assemblies" .

Ответ 2

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

Ответ 3

Я не тестировал его, но эта библиотека 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();
    }
}