そのアセンブリが存在しない可能性があるためです。
考えてみてください:
COM ポートで動作する完璧な DLL Aが作成されました。System.IO.Comports.dll
ただし、意図したとおりに正確に機能するために、ある種のライブラリを参照します。
次に、誰かがあなたの Aライブラリを使用したいと考え、それを参照します。System.IO.Comports.dll
ライブラリがプロジェクト、bin フォルダー、または system32 ディレクトリに存在することをどのように知る必要がありますか? それともどこで探す?「誰か」が開発しているEXEプロジェクトの直接の参照はありません。
直接参照は、.NET Framework などのプレインストールされたものを除いて、常に出力ディレクトリにコピーされ、実行可能ファイルがそれらを確実に見つけられるようにします。
タイプ 'System.Data.Entity.DbContext' は、参照されていないアセンブリで定義されています。
このタイプは、複数のバージョンを持つ複数のライブラリで定義される可能性があり、Visual Studio が必要なバージョンと一致するかどうかを確認するためにそれぞれを検索する方法はありません。そのため、プロジェクトには直接参照が必要であり、それがほとんどすべての理由です。 net の DLL は、追加の参照で煩わされないように、自分自身のみを参照します。