我发现了这个工具http://sab39.netreach.com/Software/Japitools/JDK-Results/46/,它使用javadoc检查Java不同版本API之间的向后兼容性。
是否有一个类似于C#/.NET的工具?
这是一个使用此工具对比JDK 1.5和JDK 6 API的示例: http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-jdk6
我发现了这个工具http://sab39.netreach.com/Software/Japitools/JDK-Results/46/,它使用javadoc检查Java不同版本API之间的向后兼容性。
是否有一个类似于C#/.NET的工具?
这是一个使用此工具对比JDK 1.5和JDK 6 API的示例: http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-jdk6
ApiChange 可以对一组“旧”程序集和一组“新”程序集进行差异分析,以查找可能造成 API 修改的地方:
ApiChange -diff -old HelloWorldV1.dll -new HelloWorldV2.dll
LibCheck 允许您比较程序集的两个版本,并确定它们之间的差异。该工具将差异报告为“删除”和“添加”API的组合:
LibCheck -store HelloWorld.dll 1.0 -full C:\HelloWorldV1\
LibCheck -store HelloWorld.dll 2.0 -full C:\HelloWorldV2\
LibCheck -compare 1.0 2.0
另请参阅 “使用 LibCheck 工作”、“突出显示程序集修订之间的公共 API 差异” 和 “程序集之间的 API 差异” 文章。
我没有测试过,但是这个库https://github.com/tunnelvisionlabs/dotnet-compatibility似乎提供了你想要的功能。
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();
}
}