21

このツールhttp://sab39.netreach.com/Software/Japitools/JDK-Results/46/を見つけました。このツールは、javadoc を使用して異なるバージョンの Java 用 API 間の後方互換性をチェックします。

C#/.NET 用のこれと同等のツールはありますか?

このツールを使用した JDK 1.5 API と JDK 6 API の比較の例を次に示します: http://www.kaffe.org/~stuart/japi/htmlout/h-jdk15-jdk6

4

3 に答える 3

18
  • ApiChangeは、「古い」アセンブリのセットと、Api の変更を壊す可能性があるために差分をとった「新しい」アセンブリのセットを取ります。

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

  • LibCheckを使用すると、アセンブリの 2 つのバージョンを比較して、違いを判断できます。このツールは、「削除された」API と「追加された」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 相違点」の記事も参照してください。

于 2011-01-26T19:30:08.263 に答える
8

リンク先の Java ツールはまだ試していませんが、NDependには 2 つのバイナリ セットを比較し、違いを強調するための強力なツールがいくつかあります。

于 2010-03-04T08:42:27.447 に答える
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();
    }
}
于 2016-09-19T16:45:00.827 に答える