次の方法で共有


コードの変更が互換性に与える影響

互換性 とは、コードが最初に開発されたもの以外の .NET 実装のバージョンでコードをコンパイルまたは実行する機能を指します。 特定の変更は、6 つの異なる方法で互換性に影響する可能性があります。

動作の変更

動作の変更は、メンバーの動作に対する変更を表します。 変更は外部から見える場合があります (たとえば、メソッドが別の例外をスローする場合があります)、または変更された実装 (戻り値の計算方法の変更、内部メソッド呼び出しの追加または削除、パフォーマンスの大幅な向上など) を表す場合があります。

動作の変更が外部から表示され、型のパブリック コントラクトを変更する場合、バイナリの互換性に影響を与えるので、簡単に評価できます。 実装の変更を評価することははるかに困難です。変更の性質と、API の使用頻度とパターンに応じて、変更の影響は重大なものから無害なものまでさまざまです。

バイナリ互換性

バイナリ互換性とは、API のコンシューマーが再コンパイルなしで新しいバージョンで API を使用する機能を指します。 メソッドの追加や、型への新しいインターフェイス実装の追加などの変更は、バイナリ互換性には影響しません。 ただし、アセンブリによって公開されているのと同じインターフェイスにコンシューマーがアクセスできないように、アセンブリのパブリック署名を削除または変更すると、バイナリの互換性に影響します。 この種の変更は、バイナリ互換性のない変更と呼ばれる.

ソースの互換性

ソースの互換性とは、API の既存のコンシューマーがソースを変更せずに新しいバージョンに対して再コンパイルする機能を指します。 ソースと互換性のない変更 は、コンシューマーが新しいバージョンの API に対して正常にビルドするためにソース コードを変更する必要がある場合に発生します。

デザイン時の互換性

デザイン時の互換性とは、Visual Studio およびその他のデザイン時環境のバージョン間でデザイン時エクスペリエンスを維持することを指します。 これにはデザイナーの動作や UI が含まれる場合があります。デザイン時の互換性の最も重要な側面は、プロジェクトの互換性に関することです。 プロジェクトまたはソリューションは、新しいバージョンのデザイン時環境で開いて使用できる必要があります。

下位互換性

下位互換性とは、API の既存のコンシューマーが同じように動作しながら新しいバージョンに対して実行する機能を指します。 動作の変更とバイナリ互換性の変更の両方が下位互換性に影響します。 新しいバージョンの API に対して実行しているときにコンシューマーが実行できない場合、または動作が異なる場合、API は下位互換性のない

開発者は新しいバージョンの API で下位互換性を期待するため、下位互換性に影響する変更は推奨されません。

上位互換性

上位互換性とは、API の既存のコンシューマーが、同じ動作を示しながら古いバージョンに対して実行する機能を指します。 古いバージョンの API に対して実行できない場合や動作が異なる場合、その API は 将来互換性がないです。

上位互換性を維持すると、バージョン間の変更や追加が事実上妨げになります。これらの変更により、新しいバージョンを対象とするコンシューマーが以前のバージョンで実行できなくなるためです。 開発者は、新しい API に依存するコンシューマーが、古い API に対して正しく機能しない可能性があることを期待しています。

前方互換性を維持することは、.NET.NET Aspireの目標ではありません。