・DLL Hell

アプリAがアプリBを入れることによって今までと動作が変わってしまうこと。
(最悪の場合は起動しなくなる。) .NETではこのようなことは起きない。

例) .NET 1.0できちんと動いてたNUnitが、.NET 1.1を入れたところで、
今まで通り.NET 1.0できちんと動いている。

・下位互換

アプリAのインフラ(ライブラリ・ランタイム・OS等々)のバージョンが上がっても、
今まで通りの動作をすること。.NETではこれは保障していない。

例) .NET 1.0できちんと動いていたNUnitが、.NET 1.1では動作しなくなった。


下位互換を保障しない代わりに、サイドバイサイドで既存のアプリ動作を保障しているわけだ。